一、JDBC基础
1.概念
JDBC:Java Database Connectivity,即数据库连接,实际上是可以执行SQL语句的java API,只是接口,没有提供实现类,实现类由各个数据库的厂商提供,这些实现类就是数据库驱动程序jar包
通过JDBC我们可以使用java代码来连接数据库,并对数据库进行一系列操作,那么如何使用JDBC连接数据库呢?首先需要了解JDBC的常用接口和类:
2.JDBC的常用接口和类简介
-
DriverManager:用于管理JDBC驱动的服务类。主要功能–获取数据库连接对象Connection
常用方法:
static Connection getConnection(String url)
尝试建立与给定数据库URL的连接。
static Connection getConnection(String url, String user, String password)
尝试建立与给定数据库URL的连接。 -
Connection:代表数据库连接对象
常用方法:
Statement createStatement()
创建一个 Statement对象,用于将SQL语句发送到数据库。
PreparedStatement prepareStatement(String sql)
创建一个 PreparedStatement对象,用于将参数化的SQL语句发送到数据库。
Connection控制事务的方法:
Savepoint setSavepoint(): 创建一个保存点
Savepoint setSavepoint(String name): 以指定名字创建一个保存点
void setTransactionIsolation(int level): 设置事务的隔离级别
void rollback() :回滚事务
void rollback(Savepoint savepoint): 将事务回滚到指定的保存点
void setAutoCommit(boolean autoCommit): 关闭自动提交,打开事务
void commit(): 提交事务 -
Statement:用于执行SQL语句的工具接口。该对象可用于执行DDL、DCL、DML、SQL语句
常用方法:
**ResultSet executeQuery(String sql): **该方法用于执行查询语句,并且只能用于查询
**int executeUpdate(String sql): **在执行DML语句时,返回受影响的行数;在执行DDL语句时,返回0 -
PreparedStatement:预编译的Statement对象,是Statement的子接口
常用方法:
void setXXX(占位符的位置,值): 预编译中sql语句定义时,用?来占位,用此方法为?赋值。
PreparedStatement同样有executeQuery()、executeUpdate()、execute()三个方法,只是不需要再接收sql语句,因为此对象已经预编译了SQL命令,只要为这些命令传入参数即可。 -
ResultSet::结果集对象
常用方法:
void close() 释放资源
**Boolean next():**将ResultSet的记录指针定位到下一行,如果有下一行,则返回true
3.JDBC入门编程步骤
public class JdbcDemo {
public static void main(String[] args) throws Exception {
// 1. 加载MySQL数据库驱动驱动
Class.forName("com.mysql.cj.jdbc.Driver");
// 2. 获取数据库连接对象 DriverManager:用于管理JDBC驱动的服务类
Connection conn = DriverManager.getConnection(
"jdbc:mysql://127.0.0.1:3306/mystudy?useUnicode=true&characterEncoding=utf-8&useSSL=false",
"user",
"password");
// 3. 通过Connection对象创建Statement对象 Statement:用于执行SQL语句的工具接口
Statement statement = conn.createStatement();
// 4. 定义sql语句
String sql = "select * from emp ";
// 5. 执行sql,接收返回结果
ResultSet rs = statement.executeQuery(sql);
// 6. 操作结果集,如果执行的SQL语句是查询语句,则执行结果将返回一个ResultSet对象,
// 该对象保存了SQL语句的查询结果,程序可以通过操作该对象取出查询结果
while (rs.next()) {
System.out.println(rs.getString(1) + "\t"
+ rs.getString(2) + "\t" + rs.getString(3));
}
// 7. 释放资源
conn.close();
statement.close();
}
}