使用JDBC驱动程序连接到MySQL
在本教程中,您将学习如何使用JDBC Connection对象连接到MySQL数据库。
要从Java程序连接到MySQL数据库,您需要执行以下步骤:
将MySQL Connector / J加载到您的程序中。
从DriverManager类中创建一个新的Connection对象。
然后,您可以使用此Connection对象执行查询。
将MySQL Connector / J加载到程序中
要将MySQL Connector / J加载到程序中,请执行以下三个步骤:
首先,在NetBeans IDE中,从项目名称中,右键单击并选择"属性"菜单项。
将出现项目属性对话框。
其次,在项目属性对话框的左侧,从"类别"部分,选择"库"项。
第三,单击"添加JAR文件夹"按钮,浏览到安装MySQL Connector / J的位置,然后选择JAR文件,如下图所示;之后,单击确定按钮。
连接到MySQL数据库
首先,您需要从java.sql。
*包中导入三个类:SQLException,DriverManager和Connection。
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException;
其次,调用DriverManager类的getConnection()方法来获取Connection对象。
您需要将三个参数传递给getConnection()方法:
url:格式为jdbc:subprotocol:subname的数据库URL。
对于MySQL,请使用jdbc:mysql:// localhost:3306 / mysqljdbc,即您要使用服务器名称localhost,端口3006和数据库mysqljdbc连接到MySQL。用户:将用于连接MySQL的数据库用户。
密码:数据库用户的密码。
Connection conn = null;
try {
// db parameters
String url = "jdbc:mysql://localhost:3306/mysqljdbc";
String user = "root";
String password = "secret";
// create a connection to the database
conn = DriverManager.getConnection(url, user, password);
// more processing here
// ...
} catch(SQLException e) {
System.out.println(e.getMessage());
} finally {
try{
if(conn ! null)
conn.close()
}catch(SQLException ex){
System.out.println(ex.getMessage())
}
}
连接到MySQL时,可能发生任何事情,例如,数据库服务器不可用,错误的用户名或密码等,在这种情况下,JDBC抛出SQLException。
因此,在创建Connection对象时,应始终将其放在try catch块中。
另外,一旦通过调用Connection对象的close()方法完成与数据库的交互,就应该始终关闭数据库连接。
从Java 7开始,还有另一个不错的声明,叫做try-with-resources,它使您可以简化上面的代码,如下所示:
// db parameters
String url = "jdbc:mysql://localhost:3306/mysqljdbc";
String user = "root";
String password = "secret";
Connection conn = null;
try(conn = DriverManager.getConnection(url, user, password);) {
// processing here
} catch(SQLException e) {
System.out.println(e.getMessage());
}
程序完成后,它将自动调用Connection对象的close()方法。
如您所见,它更干净,更优雅。
然而…
当您在上面的代码中对数据库参数进行硬编码时,它既不安全也不灵活。
如果您更改数据库服务器或密码;您必须更改代码,然后再次编译,这不是一个好的设计。
为了避免对代码中的所有数据库参数进行硬编码,可以使用Java属性文件来存储它们。
如果有更改,您只需要在属性文件中进行更改,而不必重新编译代码。
让我们看一下名为db.properties的属性文件:
# MySQL DB parameters user=root password=secret url=jdbc:mysql://localhost:3306/mysqljdbc
您可以重写代码,以使用属性文件中的参数来创建Connection对象,如下所示:
Connection conn = null;
try(FileInputStream f = new FileInputStream("db.properties")) {
// load the properties file
Properties pros = new Properties();
pros.load(f);
// assign db parameters
String url = pros.getProperty("url");
String user = pros.getProperty("user");
String password = pros.getProperty("password");
// create a connection to the database
conn = DriverManager.getConnection(url, user, password);
} catch(IOException e) {
System.out.println(e.getMessage());
} finally {
try{
if(conn != null)
conn.close();
}catch(SQLException ex){
System.out.println(ex.getMessage());
}
}
对于与MySQL数据库的每次交互,您需要创建一个新连接。
您将在所有地方都具有相同的代码来执行此操作。
您可以创建一个新类来处理连接创建,而不是这样做:
package org.theitroad;
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
/**
*
* @author theitroad.local
*/
public class MySQLJDBCUtil {
/**
* Get database connection
*
* @return a Connection object
* @throws SQLException
*/
public static Connection getConnection() throws SQLException {
Connection conn = null;
try (FileInputStream f = new FileInputStream("db.properties")) {
// load the properties file
Properties pros = new Properties();
pros.load(f);
// assign db parameters
String url = pros.getProperty("url");
String user = pros.getProperty("user");
String password = pros.getProperty("password");
// create a connection to the database
conn = DriverManager.getConnection(url, user, password);
} catch (IOException e) {
System.out.println(e.getMessage());
}
return conn;
}
}
在下一个教程中,我们将使用此MySQLJDBCUtil类创建与MySQL的新连接,如下所示:
package org.theitroad;
import java.sql.Connection;
import java.sql.SQLException;
/**
*
* @author theitroad.local
*/
public class Main {
public static void main(String[] args) {
// create a new connection from MySQLJDBCUtil
try (Connection conn = MySQLJDBCUtil.getConnection()) {
// print out a message
System.out.println(String.format("Connected to database %s "
+ "successfully.", conn.getCatalog()));
} catch (SQLException ex) {
System.out.println(ex.getMessage());
}
}
}
在本教程中,我们逐步向您展示了如何使用JDBC连接对象连接到MySQL,以及如何使用属性文件存储数据库参数。
在本教程的最后,我们开发了一个实用程序类,您可以在每次创建与数据库的连接时重用它。

