Java原生操作JDBC连接以及原理详解
JDBC(Java Database Connectivity,java数据连接)是java语言访问数据库的标准规范,使用JDBC可以方便地连接数据库、执行SQL语句、获取结果等。本文将介绍如何在Java中原生操作JDBC连接,并对JDBC连接的一些原理进行详细解释。
JDBC的工作原理
JDBC的工作原理主要是:使用JDBC驱动连接数据库,JDBC驱动会根据连接字符串连接数据库,并返回一个Connection对象,通过Connection对象可以对数据库进行操作,包括执行SQL语句、获取PreparedStatement、Statement、CallableStatement对象等。
JDBC驱动在连接数据库时会根据连接字符串中指定的数据库的类型和版本选择相应的操作方式,不同的数据库可能会需要不同的JDBC驱动。例如,连接MySQL需要使用MySQL Connector/J,而连接Oracle需要使用Oracle JDBC驱动程序等。
JDBC连接的操作步骤
下面将介绍使用JDBC连接数据库的操作步骤:
- 加载JDBC驱动程序
在使用JDBC API之前,需要先加载相应的JDBC驱动程序,可以通过Class.forName()或者DriverManager.registerDriver()方法来加载JDBC驱动程序。
Class.forName("com.mysql.cj.jdbc.Driver");
- 建立数据库连接
连接数据库的方法是DriverManager.getConnection(),可以通过传入连接字符串、数据库用户名、密码来连接数据库。getConnection()方法返回一个Connection对象,表示连接到的数据库实例。
String url = "jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai";
String user = "root";
String password = "root";
Connection conn = DriverManager.getConnection(url, user, password);
- 创建Statement对象
创建Statement对象,用于执行SQL语句。Statement对象有三种类型:Statement(用于执行一般的SQL语句)、PreparedStatement(用于执行带参数的SQL语句)、CallableStatement(用于执行存储过程)。
Statement stmt = conn.createStatement();
- 执行SQL语句
通过Statement对象的execute()、executeUpdate()、executeQuery()方法来执行SQL语句,这里分别对应执行任意SQL语句、执行INSERT、UPDATE、DELETE等SQL语句、执行SELECT语句的操作。
// 执行INSERT语句
String sql = "INSERT INTO user(id, name, age) VALUES(1, '张三', 18)";
int rows = stmt.executeUpdate(sql);
// 执行SELECT语句
String sql = "SELECT * FROM user";
ResultSet rs = stmt.executeQuery(sql);
- 关闭数据库连接
最后,使用Connection对象的close()方法关闭数据库连接,释放相关资源。
conn.close();
示例1:使用JDBC连接MySQL数据库
下面是一个使用JDBC连接MySQL数据库的示例,首先在pom.xml文件中添加MySQL Connector/J的依赖:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
</dependency>
然后使用如下代码来执行SQL语句:
import java.sql.*;
public class App {
public static void main(String[] args) throws Exception {
// 加载JDBC驱动程序
Class.forName("com.mysql.cj.jdbc.Driver");
// 建立数据库连接
String url = "jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai";
String user = "root";
String password = "root";
Connection conn = DriverManager.getConnection(url, user, password);
// 创建Statement对象
Statement stmt = conn.createStatement();
// 执行INSERT语句
String sql = "INSERT INTO user(id, name, age) VALUES(1, '张三', 18)";
int rows = stmt.executeUpdate(sql);
System.out.printf("INSERT影响了%d行数据\n", rows);
// 执行SELECT语句
sql = "SELECT * FROM user";
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
System.out.printf("id=%d, name=%s, age=%d\n", id, name, age);
}
// 关闭数据库连接
conn.close();
}
}
示例2:使用JDBC连接SQLite数据库
下面是一个使用JDBC连接SQLite数据库的示例,首先需要在pom.xml文件中添加SQLite JDBC的依赖:
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.36.0.3</version>
</dependency>
然后使用如下代码来连接SQLite数据库:
import java.sql.*;
public class App {
public static void main(String[] args) throws Exception {
// 加载JDBC驱动程序
Class.forName("org.sqlite.JDBC");
// 建立数据库连接
String dbfile = "test.db";
Connection conn = DriverManager.getConnection("jdbc:sqlite:" + dbfile);
// 创建Statement对象
Statement stmt = conn.createStatement();
// 执行CREATE TABLE语句
String sql = "CREATE TABLE IF NOT EXISTS user(id INTEGER PRIMARY KEY, name TEXT, age INTEGER)";
int rows = stmt.executeUpdate(sql);
System.out.printf("CREATE TABLE影响了%d行数据\n", rows);
// 执行INSERT语句
sql = "INSERT INTO user(id, name, age) VALUES(1, '张三', 18)";
rows = stmt.executeUpdate(sql);
System.out.printf("INSERT影响了%d行数据\n", rows);
// 执行SELECT语句
sql = "SELECT * FROM user";
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
System.out.printf("id=%d, name=%s, age=%d\n", id, name, age);
}
// 关闭数据库连接
conn.close();
}
}
这里使用的是SQLite数据库,连接字符串的格式是"jdbc:sqlite:数据库文件路径"。需要注意的是,如果数据库文件不存在,会自动创建一个新的数据库文件。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java原生操作JDBC连接以及原理详解 - Python技术站