Java提供JDBC(Java数据库连接)作为Java SDK(软件开发工具包)的一部分。使用此API,可以很容易地连接到关系数据库并执行常见的操作,例如查询,插入,更新和删除记录。
虽然JDBC核心API包含在Java中,但连接到特定的数据库(例如MySQL或SQL Server)需要一个称为数据库驱动程序的附加组件。该数据库驱动程序是一个软件组件,它将核心JDBC调用转换为该数据库可以理解的格式。
在本文中,我们将研究连接到MySQL数据库的详细信息以及如何执行一些操作。
MySQL数据库驱动程序
如上所述,要连接到MySQL数据库,需要MySQL的JDBC驱动程序。这称为连接器/ J驱动程序,可以从此处的MySQL站点下载。
一旦下载了ZIP(或TAR.GZ)文件,请提取档案并复制JAR文件 mysql -connector-java–bin.jar 到合适的位置。运行任何使用MySQL JDBC驱动程序的代码都需要该文件。
创建示例数据库
假定您已下载MySQL数据库并在可以访问的位置正确设置了该数据库它,让我们创建一个示例数据库,以便我们可以使用它来连接和执行查询。
使用您选择的客户端连接到数据库,并运行以下语句来创建示例数据库。
create database sample;
我们还需要一个用户名和密码才能连接到数据库(除非您想以管理员身份连接,这通常是个坏主意)。
以下内容创建了一个用户名为 testuser 的用户,它将使用密码 securepwd 从运行它的同一台计算机(由 localhost 指示)连接到MySQL数据库。
create user 'testuser'@'localhost' identified by 'securepwd';
如果要连接到另一台计算机上运行的数据库(名为 remotemc ),则需要使用以下命令ing( remotemc 可以是主机名或IP地址):
create user 'testuser'@'remotemc' identified by 'securepwd';
现在已经创建了用户名和密码,我们需要授予对之前创建的示例数据库的访问权限。
grant all on sample.* to 'testuser'@'localhost';
或者,如果数据库是远程的:
grant all on sample.* to 'testuser'@'remotemc';
现在,您应该验证是否可以使用刚刚创建的用户使用相同的密码连接到数据库。连接后,您还可以运行以下命令,以确保所有权限均正确。
create table joe(id int primary key auto_increment, name varchar(25));drop table joe;
设置Java类路径
现在让我们了解如何连接到的详细信息。 Java中的MySQL。第一步是加载数据库驱动程序。这是通过在适当的位置调用以下代码来完成的。
Class.forName("com.mysql.jdbc.Driver");
代码可能会引发异常,因此,如果您打算处理它,则可以捕获它(例如,格式化GUI的错误消息)。
try { Class.forName("com.mysql.jdbc.Driver");} catch(ClassNotFoundException ex) { // use the exception here}
在类的静态块中调用此代码非常普遍,因此如果无法加载驱动程序,程序将立即失败。
public class Sample{ static { try { Class.forName("com.mysql.jdbc.Driver"); } catch(ClassNotFoundException ex) { System.err.println("Unable to load MySQL Driver"); } }}
当然,能够要找到驱动程序,必须使用包含在类路径中的驱动程序JAR(上面已下载和提取)来调用程序,如下所示。
从Java连接到MySQL
现在,我们整理了从Java加载MySQL驱动程序的细节,让我们开始连接数据库。创建数据库连接的一种方法是使用 DriverManager 。
String jdbcUrl = ...;Connection con = DriverManager.getConnection(jdbcUrl);
什么是 jdbcUrl ?它指示连接的详细信息,包括数据库所在的服务器,用户名等。这是我们示例的示例URL。
String jdbcUrl = "jdbc:mysql://localhost/sample?user=testuser&password=secrepwd";
请注意,我们已包含连接所需的所有参数,包括主机名( localhost ),用户名和密码。 (包括这样的密码不是一个好习惯,请参见下面的替代方法。)
使用此 jdbcUrl ,这是一个检查连接性的完整程序。
public class Sample{ static { try { Class.forName("com.mysql.jdbc.Driver"); } catch(ClassNotFoundException ex) { System.err.println("Unable to load MySQL Driver"); } } static public void main(String[] args) throws Exception { String jdbcUrl = "jdbc:mysql://localhost/sample?user=testuser&password=securepwd"; Connection con = DriverManager.getConnection(jdbcUrl); System.out.println("Connected!"); con.close(); }}
请注意,数据库连接是程序中的宝贵资源,必须如上所述正确关闭。但是,上面的代码在出现异常的情况下不会关闭连接。为了在正常或异常出口上关闭连接,请使用以下模式:
try(Connection con = DriverManager.getConnection(jdbcUrl)) { System.out.println("Connected!");}
如上所述,将密码嵌入JDBC URL是一个坏主意。要直接指定用户名和密码,可以改为使用以下连接选项。
String jdbcUrl = "jdbc:mysql://localhost/sample";try(Connection con = DriverManager.getConnection(jdbcUrl, "testuser", "securepwd")) {}
从Java查询数据库
现在已建立与数据库的连接,让我们看看如何执行查询,例如查询数据库版本:
select version();
在Java中执行查询的方法如下。创建 Statement 对象并使用 executeQuery()方法执行查询,该方法返回 ResultSet 。
String queryString = "select version()";Statement stmt = con.createStatement();ResultSet rset = stmt.executeQuery(queryString);
如下所示从 ResultSet 打印版本。 1 是指结果中列的索引,从1开始。
while ( rset.next()) { System.out.println("Version: " + rset.getString(1));}
处理结果后,需要关闭对象。
rset.close();stmt.close();
这涵盖了从Java连接到MySQL并执行简单查询的所有内容。
您是否在项目中使用了JDBC和MySQL?您是否对数据库和Java遇到什么问题?请在下面的评论中告知我们。