看完这篇内容,相信你很快就了解JDBC啦!
也欢迎大家为我的仓库点点start👉JavaStudy
1. 什么是JDBC?
JDBC(Java Database Connectivity)是Java语言中用于执行SQL语句的标准API。它为多种关系数据库提供统一访问,使用Java语言编写的应用程序可以通过JDBC与各种数据库建立连接,进行数据插入、查询、更新、删除等操作。
2. JDBC连接MySQL的步骤
2.1 加载驱动
首先,我们需要加载MySQL的JDBC驱动。这一步是通过调用Class.forName()
方法来完成的:
Class.forName("com.mysql.cj.jdbc.Driver");
这行代码会将MySQL的驱动类加载到JVM中。注意,在较新版本的MySQL Connector/J中,这一步骤可以省略,因为驱动会自动注册。
2.2 建立数据库连接
接下来,我们使用DriverManager.getConnection()
方法来建立与数据库的连接:
String url = "jdbc:mysql://localhost:3306/jdbc_study?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true"; String user = "root"; String password = "root"; Connection connection = DriverManager.getConnection(url, user, password);
这里的URL包含了很多信息:
-
jdbc:mysql://
: 协议 -
localhost
: 主机名 -
3306
: MySQL默认端口 -
jdbc_study
: 数据库名 -
后面的参数用于设置字符编码、时区等
2.3 创建Statement对象
通过Connection对象,我们可以创建Statement对象,用于执行SQL语句:
Statement statement = connection.createStatement();
2.4 执行SQL语句
使用Statement对象可以执行各种SQL语句。例如,创建一个表:
String sql = "CREATE TABLE userinfo(" + "id INT PRIMARY KEY AUTO_INCREMENT," + "username VARCHAR(32) NOT NULL," + "password VARCHAR(32) NOT NULL," + "nickname VARCHAR(32) NOT NULL," + "age INT" + ")"; statement.execute(sql);
2.5 处理结果集
如果执行的是查询语句(SELECT),需要使用ResultSet来处理返回的结果集:
String query = "SELECT * FROM userinfo"; ResultSet resultSet = statement.executeQuery(query); while (resultSet.next()) { // 处理每一行数据 int id = resultSet.getInt("id"); String username = resultSet.getString("username"); // ... 处理其他列 }
2.6 关闭连接
操作完成后,务必关闭所有资源:
resultSet.close(); statement.close(); connection.close();
3. JDBC的优势
-
跨数据库: JDBC提供了统一的API,可以连接不同类型的数据库。
-
简单易用: 相比直接使用数据库特定的API,JDBC更加简单和标准化。
-
性能: JDBC是一个轻量级的数据库访问解决方案,性能表现良好。
4. 注意事项
-
异常处理: 在实际应用中,应该使用try-catch块来处理可能出现的SQL异常。
-
使用PreparedStatement: 相比Statement,PreparedStatement可以防止SQL注入,并且在执行多次类似查询时性能更好。
-
连接池: 在大型应用中,应该使用连接池来管理数据库连接,以提高性能和可伸缩性。
5. 结语
JDBC为Java应用程序提供了一种强大而灵活的数据库访问方式。通过掌握JDBC,开发者可以轻松地实现各种数据库操作,为应用程序增添数据持久化的能力。
参考示例
package jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; public class JDBCDemo1 { public static void main(String[] args) throws Exception { /* 1、加载驱动 2、使用DriverManage建立连接->Connection对象 3、使用Connection建立Statement对象 4、使用Statement执行sql语句->ResultSet 5、遍历结果集(前提是步骤4执行的是DQL语句,SELECT语句) 6、关闭连接 */ //1、加载驱动 Class.forName("com.mysql.cj.jdbc.Driver"); // 2、使用DriverManage建立连接->Connection // 三个参数:url、用户名、密码 // url 格式:jdbc:mysql://主机名:端口号/数据库名?参数1&参数2&参数3 // 默认端口号:3306 String databaseName = "jdbc_study"; Connection connection = DriverManager.getConnection( "jdbc:mysql://localhost:3306/"+databaseName+"?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true", "root", "root" ); System.out.println("连接成功"); // 创建statement对象 Statement statement = connection.createStatement(); /* CREATE TABLE userinfo(\n" + " id INT PRIMARY KEY AUTO_INCREMENT,\n" + " username VARCHAR(32) NOT NULL,\n" + " password VARCHAR(32) NOT NULL,\n" + " nickname VARCHAR(32) NOT NULL,\n" + " age INT\n" + " ) */ // 使用statement对象创建表 String sql = "CREATE TABLE userinfo(\n" + " id INT PRIMARY KEY AUTO_INCREMENT,\n" + " username VARCHAR(32) NOT NULL,\n" + " password VARCHAR(32) NOT NULL,\n" + " nickname VARCHAR(32) NOT NULL,\n" + " age INT\n" + " )"; statement.execute(sql); System.out.println("创建表成功"); } }