名词解释
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
连接
依赖
java.sql.Connection;//用于连接数据库
语法
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
依赖
java.sql.Statement; //用于执行SQL语句
java.sql.ResultSet; //用于保存结果集
语法
//创建查询对象
Statement statement= conn.createStatement();
//执行查询
ResultSet resultSet = statement.executeQuery("SQL查询语句");
…
//关闭查询
statement.close();
PreparedStatement
依赖
java.sql.PreparedStatement;
语法
//创建预编译SQL对象,SQL语句中的变量用?代替
PreparedStatement preparedStatement = conn.prepareStatement("SQL查询语句");
//填充SQL语句中的变量
//如 preparedStatement.setInt(3, 300); 将第3个?设置为300
preparedStatement.setType(i, x);
//执行该预编译SQL语句,没有参数
preparedStatement.executeQuery();
//关闭查询
preparedStatement.close();
结果集的使用
依赖
java.sql.ResultSet; //用于保存结果集
遍历结果集
while(resultSet.next()){
int value1 = resultSet.getInt("字段1");
String value2 = resultSet.getString("字段2");
…
}
resultSet.close(); //关闭结果集
更新/插入/删除
依赖
java.sql.Statement;
java.sql.PreparedStatement;
语法
//执行SQL语句,并返回成功执行的记录数
int result = statement.executeUpdate("SQL语句");
//其他设置同查询
//使用预编译执行SQL语句,没有参数。返回成功执行的记录数
//预编译的数据填充同查询
int result2 = statement.executeUpdate();
//提交
conn.commit();
回滚
当执行SQL语句失败时(抛出SQLException异常),应执行回滚操作
依赖
java.sql.Connection;
语法
try{
…//执行SQL语句
}catch(SQLException e){
conn.rollback();//回滚
}
资源释放
执行结束后应释放占用资源
按照创建的顺序的倒序,关闭各资源。
来源:https://www.cnblogs.com/AlMirai/p/12526131.html