JDBC
JDBC的全称是Java数据库连接(Java Database Connect),它是一套用于执行SQL语句的Java API。 应用程序可通过这套API连接到关系数据库,并使用SQL语句来完成对数据库中数据的查询、更新和删除等操作。简言之,使用JDBC通过代码来操作数据库。
准备
想要通过代码来操作数据库就需要在项目中导入对应数据库的驱动包,才能编写代码。
- 通过 Maven 中央仓库下载对应数据库驱动包;Maven中央仓库

点击第二个,会看到许多个版本,此处根据你自己的数据库版本进行选择。例如:你的数据库版本是5.xx,你就需要下载以5.xx开头的驱动包。

进行下载:

- 在项目中导入驱动包;
先创建一个目录,将驱动包复制到这个目录里面。


此处将 jar 包导入到项目里面,就可以调用其中的方法和类来进行 JDBC 编程。 - 将 plug 目录标记为项目中的库;

这个操作使我们的编译器能识别目录里面的 jar 包,这样就可以调用 jar 包进行JDBC编程。

- 进行 JDBC 编程;
JDBC 编程
进行 JDBC 编程需要以下几个步骤:
- 创建并初始化一个数据源
- 与数据库服务器建立连接
- 构造 sql 语句
- 执行 sql 语句
- 释放资源
创建并初始化一个数据源
public class JDBC {
public static void main(String[] args) {
// JDBC 开发步骤
// 1. 创建并初始化一个数据源
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/jdbc?characterEncoding=utf8&useSSL=false");
((MysqlDataSource)dataSource).setUser("root"); // 默认
((MysqlDataSource)dataSource).setPassword("z0329"); // 数据库密码
//MysqlDataSource dataSource1 = new MysqlDataSource(); // 第二种写法
//dataSource1.setUrl();
// 2. 与数据库服务器建立连接
// 3. 构造 sql 语句
// 4. 执行 sql 语句
// 5. 释放资源
}
}
注意 Url 的写法。Url 概念

与数据库服务器建立连接
public static void main(String[] args) throws SQLException {
// JDBC 开发步骤
// 1. 创建并初始化一个数据源
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/jdbc?characterEncoding=utf8&useSSL=false");
((MysqlDataSource)dataSource).setUser("root"); // 默认
((MysqlDataSource)dataSource).setPassword("z0329"); // 数据库密码
//MysqlDataSource dataSource1 = new MysqlDataSource(); // 第二种写法
//dataSource1.setUrl("jdbc:mysql://127.0.0.1:3306/jdbc?characterEncoding=utf8&useSSL=false");
//dataSource1.setUser("root");
//dataSource1.setPassword("z0329");
// 2. 与数据库服务器建立连接
Connection connection = dataSource.getConnection();
// 3. 构造 sql 语句
// 4. 执行 sql 语句
// 5. 释放资源
}
注意:此处 Connection 包的路径

构造 sql 语句
// 3. 构造 sql 语句
String sql = "insert into student value(1,'你好呀')";
PreparedStatement statement = connection.prepareStatement(sql); // 使用 PreparedStatement 提前预编译 sql 语句
为什么要进行预编译?
客户端给服务器发送请求(sql 字符串),服务器对 sql 语句进行解析,然后再执行。
而对于服务器来说,是要处理多个客户端请求的,这样以来服务器压力就很大,所以引出预编译
预编译:让客户端来对 sql 进行预编译和处理,服务器做的工作就简单点,压力就会小很多。
执行 sql 语句
// 4. 执行 sql 语句
int result = statement.executeUpdate(); // insert,delete,update 这三个操作都可以使用 executeUpdate() 方法. 而 select 使用 executeQuery() 方法
System.out.println("result = " + result); // 返回影响行数
释放资源
public class JDBC {
public static void main(String[] args) throws SQLException {
// JDBC 开发步骤
// 1. 创建并初始化一个数据源
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/jdbc?characterEncoding=utf8&useSSL=false");
((MysqlDataSource)dataSource).setUser("root"); // 默认
((MysqlDataSource)dataSource).setPassword("z0329"); // 数据库密码
// 2. 与数据库服务器建立连接
Connection connection = dataSource.getConnection();
// 3. 构造 sql 语句
String sql = "insert into student value(1,'你好呀')";
PreparedStatement statement = connection.prepareStatement(sql); // 使用 PreparedStatement 提前预编译 sql 语句
// 4. 执行 sql 语句
int result = statement.executeUpdate(); // insert,delete,update 这三个操作都可以使用 executeUpdate() 方法. 而 select 使用 executeQuery() 方法
System.out.println("result = " + result); // 返回影响行数
// 5. 释放资源
statement.close();
connection.close();
}
}
执行前:
执行后:

进行简单优化
上述操作中,名字呀,id呀,是我们直接在程序中输入,写死的。那么还有种方法,可以让用户从键盘上键入内容。
- 添加一步提示用户从键盘输入;
- 对第三步 构造 sql 语句 进行修改。
public static void main(String[] args) throws SQLException {
Scanner scanner = new Scanner(System.in);
// JDBC 开发步骤
// 1. 创建并初始化一个数据源
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/jdbc?characterEncoding=utf8&useSSL=false");
((MysqlDataSource)dataSource).setUser("root"); // 默认
((MysqlDataSource)dataSource).setPassword("z0329"); // 数据库密码
// 2. 与数据库服务器建立连接
Connection connection = dataSource.getConnection();
// 3. 从控制台读取用户输入的内容
System.out.println("请输入学生 id");
int id = scanner.nextInt();
System.out.println("请输入学生姓名");
String name = scanner.next();
// 4. 构造 sql 语句
String sql = "insert into student value(?,?)";
PreparedStatement statement = connection.prepareStatement(sql); // 使用 PreparedStatement 提前预编译 sql 语句
statement.setInt(1,id); // 进行拼接,将第一个问号替换成 id
statement.setString(2,name); // 将第二个问号替换成 name
System.out.println(statement); // 打印 sql 语句
// 5. 执行 sql 语句
int result = statement.executeUpdate(); // insert,delete,update 这三个操作都可以使用 executeUpdate() 方法. 而 select 使用 executeQuery() 方法
System.out.println("result = " + result); // 返回影响行数
// 6. 释放资源
statement.close();
connection.close();
}



本文详细介绍了JavaDatabaseConnectivity(JDBC)的基本概念,包括如何导入数据库驱动、创建数据源与数据库建立连接、构造SQL语句(特别是预编译的使用),以及执行操作和资源的释放。最后展示了如何从用户输入动态构建SQL语句进行操作。

被折叠的 条评论
为什么被折叠?



