许多人仍然在互联网上徘徊,寻找在其Java项目中启动MySQL连接的正确方法。 作为一个初学者,我本人经常花大量时间在互联网上寻找可行的方法。 因此,这就是我发现的内容,到目前为止,它一直在正常工作。 如果有问题,请在下面发表评论。
我将为该项目使用Wamp服务器和NetBeans。
Creating Database
在开始之前,请打开wamp服务器并启动localhost。 然后在网络浏览器的地址栏中输入“ localhost / phpmyadmin”,它将打开phpmyadmin主页。
我们将为此使用root登录。 如您所知,用户名是root,默认情况下,root用户不需要密码。 然后按执行按钮。 这将打开数据库页面。
好的,现在您必须创建一个数据库和一个数据库内的表才能与Java类连接。 为此,请单击“数据库”页面上的“ SQL”选项卡,您将看到一个用于SQL查询的终端。
就我而言,我将创建一个名为Customer的数据库和一个名为details的表。 我将使用c_name,phone_no和address作为表列。
因此,我将执行此查询以创建数据库。 “创建数据库客户” Type this in the terminal and hit Go
然后单击在左侧菜单上创建的数据库,然后再次单击“ SQL”选项卡。
执行以下查询。 (无引号)
"CREATE TABLE details(
c_name TEXT, #this field is a text field
phone_no INT(10),#this is a Integer field and limits user input to 10 digits
address TEXT #this field is a text field
) "
这将创建表,我们现在就完成了数据库。
Java Code
打开Netbeans并开始一个新项目。 我的项目将称为“客户”。 创建一个JFrame表单,并设计一个带有3个JLabel和2个JTextField的接口(用于用户输入)和一个JButton来提交数据。 (我不会解释界面设计)
这是我的接口和变量名。
Installing mysql connector
为了启动MySQL连接,您需要一个JDBC驱动程序(Java数据库连接驱动程序)。由于我们使用的是MySQL,因此首先需要下载并安装该驱动程序。
从网络浏览器导航到该URL。
Https://dev.mysql.com/downloads/connector/j/5.1.html
下载“独立于平台的ZIP存档”。 下载后,将ZIP文件解压缩到一个文件夹中。
再次转到NetBeans。 在左侧菜单中,您可以看到您的项目名称。 像这样。
右键单击项目名称,然后选择属性。 在属性窗口中,单击库。 然后单击“添加JAR /文件夹”按钮,您可以在右侧找到它。
导航到您之前提取MySQL驱动程序的文件夹,然后选择“ mysql-connector-java-5.1.46”(5.1.46是版本号。如果下载新版本,则有所不同)。 单击“打开”,您可以看到驱动程序正在安装。
现在,您已经成功安装了JDBC驱动程序。
Java coding
转到您之前进行的界面设计。 双击提交按钮,它将为您的提交按钮的Click事件打开源窗口。
转到源窗口顶部,然后导入Java Sql类。
导入java.sql。*;
首先,我将数据从JTextFields调用到一些变量中。
phone是一个Integer变量,您可以从JTextField获得一个String值。 所以我用Integer.parseInt()将String数据输入转换为Integer。
然后,您需要启动数据库连接。
“主机”是您数据库的URL。 用您自己的数据库名称替换“客户”。 我们用于创建数据库的phpmyadmin帐户的“ Usern”用户名,而“ pw”是上述帐户的密码。 由于我们使用root登录,因此将没有密码。 然后,我们必须创建一个名为“ con”的新连接并启动连接。
现在您可以看到连接的最后一部分,突出显示为错误。 这是因为这会引发异常(特别是SQL异常)。 因此,我们需要使用try and catch块将这段代码括起来。
然后,您必须执行SQL查询才能将用户输入添加到数据库中。
为此,我们必须创建一个语句。 我要创建一个名为“ stmt”的语句。 然后为SQL语句声明一个String变量。 由于我们要添加数据,因此我们必须使用插入查询。 键入SQL语句,然后最终执行查询。
重要:当您从变量插入数据时,请确保您这样输入。
'“ + variable_name +”'(打开单引号,打开双引号,加号,variable_name,加号,关闭双引号,关闭单引号)
而且您必须根据数据库列的顺序输入数据。
最后,为了添加一些额外的功能,我添加了一个弹出框以成功执行。
我们的最终代码将如下所示。
String name = txtname.getText();
int phone = Integer.parseInt(txtphone.getText());
String address = txtaddress.getText();
String host = "jdbc:mysql://localhost:3306/customer";
String usern = "root";
String pw = "";
try {
Connection con = DriverManager.getConnection(host, usern, pw);
Statement stmt = con.createStatement();
String sql = "INSERT INTO details VALUES ('" + name + "' ,'" + phone + "' , '" + address + "' )";
stmt.executeUpdate(sql);
JOptionPane.showMessageDialog(null, "Data inserted Successfully!");
} catch (SQLException ex) {
Logger.getLogger(details.class.getName()).log(Level.SEVERE, null, ex);
} finally {
{
try {
con.close();
} catch (Exception e) {}
}
}
而已! 按Shift + f6并运行程序。 如果您有任何疑问,请在下面的评论部分中告诉我。 编码愉快!
EDIT:
As this is just simple code for getting a basic idea, there are two vulnerabilities in this code.
I have included an additional block of code at the end of the code to close the connection we opened to database. And here I have concatenated input parameters directly into sql without escaping them. That could lead to an SQL injection. Its always better to use Prepared Statements which you can find here.
Thanks @Pavol !