JDBC 英文名为:Java Data Base Connectivity(Java 数据库连接),官方解释它是独立于数据库的标准的 Java API。
JDBC 是一种规范,它提供一套完整的允许便捷式访问底层数据库的接口
,简单来说它就是 Java 与数据库连接的桥梁或者插件,通过它,就能用 Java 代码操作数据库,实现数据库的增删改查、存储过程和事务处理等功能。
作用:
类中方法:
Connection getConnection (String url, String user, String password)
:通过连接字符串,用户名,密码来得到数据。
库的连接对象
Connection getConnection (String url, Properties info)
:通过连接字符串,属性对象来得到连接对象。
一个连接对象,可用于创建 Statement
和 PreparedStatement
对象。
类中方法:
Statement createStatement()
:创建一条 SQL 语句对象。
一个 SQL 语句对象,用于将 SQL 语句发送给数据库服务器。
类中方法:
int executeUpdate(String sql)
:
ResultSet executeQuery(String sql)
:
释放资源:
需要释放的对象:ResultSet 结果集,Statement 语句,Connection 连接
释放原则:先开的后关,后开的先关。ResultSet → Statement → Connection
放在哪个代码块中:finally 块
Statement
的子接口。boolean next()
数据类型 getXxx()
1.)使用 JDBC 连接数据库并创建如下数据表:
编码 | 部门编码 | 姓名 | 性别 | 年龄 | 入职日期 |
---|---|---|---|---|---|
1 | 1 | 李雷 | 男 | 22 | 2021-01-09 |
2 | 1 | 韩梅梅 | 21 | 2020-02-23 | |
3 | 2 | 赵男 | 女 | 23 | 2018-05-17 |
4 | 3 | 周倩 | 女 | 20 | |
5 | 3 | 夏雨 | 男 | 2017-09-29 |
编码 | 部门名称 |
---|---|
1 | 研发部 |
2 | 产品部 |
3 | 运营部 |
4 | 财务部 |
答:创建表格
package com.xxm.advanced_camp.mission16_JDBC;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class task1 {
public static void main(String[] args) throws Exception {
//1. 注册驱动
Class.forName("com.mysql.jdbc.Driver");
//2.获取数据库连接对象
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/study", "root", "root");
//3.定义 sql 语句
//创建员工表
String sql1 = "CREATE TABLE employers_table(\n" +
"id INTEGER(8) NOT NULL AUTO_INCREMENT,\n" +
"department_id INTEGER(8) NOT NULL,\n" +
"emp_name CHAR(16) NOT NULL,\n" +
"gender CHAR(8),\n" +
"age INTEGER(8),\n" +
"join_date CHAR(32),\n" +
"PRIMARY KEY(id)\n" +
");";
//创建部门表
String sql2 = "CREATE TABLE departments_table(\n" +
"department_id\tINTEGER(4) NOT NULL AUTO_INCREMENT,\n" +
"department_name\tCHAR(16) NOT NULL,\n" +
"PRIMARY KEY(department_id)\n" +
");";
//4.获取执行 sql 的对象
Statement stmt = conn.createStatement();
//5.执行 sql 语句
int count1 = stmt.executeUpdate(sql1);
int count2 = stmt.executeUpdate(sql2);
//6.处理结果
System.out.println(count1);
System.out.println(count2);
//7.释放资源
stmt.close();
conn.close();
}
}
使用 JDBC 完成如下任务:
答:1-7,由于在 SQL 中做过, 在 JDBC 中就不再做了。
但是要注意几个点:
答:
题中,各个要求不同的点,主要在 第三步,SQL 语句不同。
其中,第 1 个要求,在第 5-6 步的时候,要使用 executeUpdate , 接收结果时使用 int 类型(处理影响的行数);
后面几个要求,要使用 executeQuerey ,接收结果时使用 Result 类的对象,输出时类似这样。
第七步,释放资源时,要先关闭结果集 ResultSet,再关闭 Statement,再关闭 Connection 。
给员工表插入十万条数据(员工姓名、年龄、日期都可以随机生成),然后再使用批处理完成同样的功能,比较两种操作的耗时。
package com.xxm.advanced_camp.mission16_JDBC;
import com.mysql.cj.x