JDBC简介
JDBC全称 Java Database Connectivity,即数据库连接,它是一种可以执行SQL语句的Java API。
JDBC驱动
数据库驱动程序是JDBC程序和数据库之间的转换层,数据库驱动负责将JDBC调用映射成特定的数据库调用。
四种类型JDBC驱动:
- JDBC-ODBC桥,最早实现的JDBC驱动程序,将JDBC API映射为ODBC API(单线程)。
- 直接将JDBC API映射成数据库特定的客户端API
- 支持三层结构的JDBC访问方式,主要用于Applet阶段,通过Applet访问 数据库
- 纯JAVA的,直接与数据库实例交互,这种驱动是职能的,他知道数据库的底层协议,目前最常用
JDBC常用接口类
Connection
代表数据库连接对象,每个Connection代表一个物理连接对话,要想访问数据库,必须先获得数据库连接。
//返回一个Statement对象
Statement createStatement() throws SQLException
//返回预编译的Statement对象
PreparedStatement prepareStatement(String sql) throws SQLException
//返回存储过程CallableStatement对象
CallableStatement prepareCall(String sql) throws SQLException
//控制事务的方法:
Savepoint setSavePoint() //创建一个保存点
Savepoint setSavePoint(String name) //以指定名字创建一个保存点
void setTransactionIsolation(int level) //设置事务隔离级别
void rollback() //回滚事务
void rollback(Savepoint savepoint) //将事务回滚到指定的保存点
void setAutoCommit(boolean autoCommit) //关闭自动提交,打开事务
void commit() //提交事务
获取数据库连接
Connection connection = DriverManager.getConnection(String url, String user, String pass)
使用Statement执行SQL语句
- execute: 可以执行任何SQL语句,但比较麻烦
- executeUpdate: 主要用于执行DML和DDL语句,执行DML语句返回收SQL语句影响的行数
- executeQuery: 只能执行查询语句,执行后返回代表查询结果的ResultSet对象
回收数据库资源
ResultSet rs;
Statement stmt;
Connection conn;
//以上获取对象过程省略,关闭时是按照栈的原则进行关闭
if(rs != null)
rs.close();
if(stmt != null)
stmt.close();
if(conn != null)
conn.close();
简单示例
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class JDBC {
public static void main(String[] args) throws Exception{
//加载驱动
Class.forName("com.mysql.jdbc.Driver");
//使用DriverManager获取数据库连接
Connection conn = DriverManager
.getConnection("jdbc:mysql://localhost:3306/jdbc",
"root", "root");
//使用Connection来创建Statement对象
Statement stmt = conn.createStatement();
//执行SQL语句,这里只展示三种方法中的查询
ResultSet rs = stmt.executeQuery("select * from test");
//操作结果集
while(rs.next()){
System.out.println(rs.getInt(1)+ " "
+ rs.getString(2) + " "
+ rs.getString(3));
}
//关闭数据库连接
if(rs != null)
rs.close();
if(stmt != null)
stmt.close();
if(conn != null)
conn.close();
}
}