使用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,以及如何使用属性文件存储数据库参数。
在本教程的最后,我们开发了一个实用程序类,您可以在每次创建与数据库的连接时重用它。