名词解释

  • ODBC: Open Database Connectivity
  • JDBC: Java Database Connectivity
  • JDBC API: 管理数据库,用于编成
  • JDBC Driver API: 连接数据库,加载数据库驱动

JDBC API

DriverManager

  • 装载驱动程序

Connection

  • 连接数据库

常用方法

方法 说明 返回类型
createStatement() 创建查询对象 Statement
prepareStatement() 创建预编译查询对象 PreparedStatement
prepareCall(“{call 存储过程名(?, ?, ?…)}“) 每个?表示一个参数 CallableStatement
commit() 提交更改至数据库,返回执行的记录数 int
close() 关闭数据库连接

Statement

  • 执行SQL语句

常用方法

方法 说明 返回类型
executeQuery(String SQL查询语句) 执行该SQL查询 ResultSet
executeUpdate(String SQL语句) 执行Insert、Update、Delete语句,返回执行成功的记录数 int
close() 关闭查询对象,释放资源

PreparedStatement

  • 执行预编译的SQL语句

常用方法

方法 说明 返回类型
executeQuery() 执行编译后的SQL查询 ResultSet
executeUpdate() 执行编译后的Insert、Update、Delete语句,返回执行成功的记录数 int
setType(int i, Type x) 将预编译的第i个占位符设置为x,i从1开始

CallableStatement

  • 执行存储过程

常用方法

方法 说明 返回类型
setType(int i, Type x) 将存储过程第i个值设置为x
executeUpdate() 执行存储过程

ResultSet

  • 查询结果集

常用方法

方法 说明 返回类型
next() 移动至下一条记录,当到达末尾是,返回false boolean
getType(“字段名”) 返回Type类型的该字段的值 Type

JDBC Driver API

  • 面向开发商,使数据库驱动适配Java

连接

依赖

1
import java.sql.Connection;//用于连接数据库

语法

语法
1
2
3
4
Class.forName("驱动名");
Connection conn = DriverManager.getConnection("地址","用户名","密码");

conn.close()//关闭连接
  • MySQL

    驱动名:”com.mysql.jdbc.Driver”

    地址:”jdbc:mysql://ip:port[/数据库]”

  • Oracle

    驱动名:”oracle.jdbc.driver.OracleDriver”

    地址:”jdbc:oracle:thin:@ip:port[:数据库]”

查询

Statement

依赖

1
2
java.sql.Statement; //用于执行SQL语句
java.sql.ResultSet; //用于保存结果集

语法

语法
1
2
3
4
5
6
7
//创建查询对象
Statement statement= conn.createStatement();
//执行查询
ResultSet resultSet = statement.executeQuery("SQL查询语句");

//关闭查询
statement.close();

PreparedStatement

依赖

1
java.sql.PreparedStatement;

语法

1
2
3
4
5
6
7
8
9
10
//创建预编译SQL对象,SQL语句中的变量用`?`代替
//如 select * from t where a=? and b=? and c=?
PreparedStatement preparedStatement = conn.prepareStatement("SQL查询语句");
//填充SQL语句中的变量
//如 preparedStatement.setInt(3, 300); 将第3个`?`设置为300
preparedStatement.setType(i, x);
//执行该预编译SQL语句,没有参数
preparedStatement.executeQuery();
//关闭查询
preparedStatement.close();

结果集的使用

依赖

1
java.sql.ResultSet; //用于保存结果集

遍历结果集

语法
1
2
3
4
5
6
while(resultSet.next()){
int value1 = resultSet.getInt("字段1");
String value2 = resultSet.getString("字段2");

}
resultSet.close(); //关闭结果集

更新/插入/删除

依赖

1
2
java.sql.Statement;
java.sql.PreparedStatement;

语法

语法
1
2
3
4
5
6
7
8
//执行SQL语句,并返回成功执行的记录数
int result = statement.executeUpdate("SQL语句");
//其他设置同查询
//使用预编译执行SQL语句,没有参数。返回成功执行的记录数
//预编译的数据填充同查询
int result2 = statement.executeUpdate();
//提交
conn.commit();

回滚

  • 当执行SQL语句失败时(抛出SQLException异常),应执行回滚操作

依赖

1
2

java.sql.Connection;

语法

语法
1
2
3
4
5
try{
//执行SQL语句
}catch(SQLException e){
conn.rollback();//回滚
}

资源释放

  • 执行结束后应释放占用资源
  • 按照创建的顺序的倒序,关闭各资源,可使用try-with-resources