JDBC
-
概念:Java Database Connectivity Java数据库连接 Java语言操作数据库
- JDBC本质:其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口,各个数据库厂商去实现这套接口,提供数据库驱动的jar包,我们可以使用这套接口(JDBC)编程,真正执行的的代码是驱动jar包中的实现类
-
快速入门:
- 步骤:
- 导入驱动jar包
- 注册驱动
- 获取数据库连接对象Connection
- 定义sql
- 获取执行sql语句的对象 Statement
- 执行sql,接收返回结果
- 处理结果
- 释放资源
- 步骤:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class JdbcDemo1 {
public static void main(String[] args) throws Exception{
//1. 导入驱动jar包
//2. 注册驱动
Class.forName("com.mysql.jdbc.Driver");
//3. 获取数据库连接对象
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3380/text","root","root");
//4. 定义sql语句
String sql = "";
//5. 获取执行sql的对象
Statement statement = connection.createStatement();
int count = statement.executeUpdate(sql);
System.out.println(count);
statement.close();
connection.close();
}
}
3. 详解各个对象:
- DriverManager:驱动管理对象
2. 获取数据库连接
- 方法:static Connection getConnection(String url, String user, String password)
- 参数:
- URL:指定连接的路径
- 语法:jdbc:mysql://ip地址(域名):端口号/数据库名称
- 例子:jdbc:mysql://localhost:3380/text
- 细节:如果连接的是本机的mysql服务器,并且mysql服务默认端口是3306,则URL可以简写为jdbc:mysql:///数据库名称
- user:用户名
- password:密码
static void registerDriver(Driver driver) :注册于给定的驱动程序 DriverManager
写代码使用:Class.forName("com.mysql.jdbc.Driver");
通过查看源码发现:在"com.mysql.jdbc.Driver"类中存在静态代码块
static {
try {
java.sql.DriverManager.registerDriver(new Driver());
} catch (SQLException e){
throw new RuntimeException("Can`t register driver!");
}
}
注意:mysql5之后的驱动jar包可以省略注册驱动的步骤
-
Connection:数据库连接对象
- 功能:
- 获取执行sql的对象
- Statement createStatement()
- PreparedStatement prepareStatement(String sql)
- 管理事务
- 开启事务:void setAutoCommit(boolean autoCommit) :调用该方法设置参数为false,即开启事务
- 提交事务:void commit()
- 回滚事务:void rollback()
- 获取执行sql的对象
- 功能:
-
Statement:执行sql的对象
- 执行sql
- boolean execute():可以执行任意的sql
- int executeUpdate():执行DML(insert、update、delete)语句、DDL(create、alter、drop)语句
- 返回值:影响的行数,可以通过这个影响的行数判断DML语句是否执行成功 返回值>0的则执行成功。反之则失败
- ResultSet executeQuery():执行DQL(select)语句
- 执行sql
-
ResultSet:结果集对象,封装查询结果
- next():游标向下移动一行
- getxxx(参数):获取数据
- int:代表列的编号,从1开始
- String:代表列名称
- 注意:
- 使用步骤:
- 游标向下移动一行
- 判断是否有数据
- 获得数据
- 使用步骤:
- next():游标向下移动一行
-
PreparedStatement:执行sql的对象
注意:后期都会使用PreparedStatement来完成增删改查的所有操作- 可以防止sql注入
- 效率更高
JDBC控制事务
- 事务:一个包含多个步骤的业务操作,如果这个业务操作被事务管理。要么同时成功,要么同时失败
- 操作:
- 开启事务
- 提交事务
- 回滚事务
- 使用Connection对象来管理事务
- 开启事务:setAutoCommit(boolean autoCommit):调用该方法设置参数为false。即开启事务
- 在执行sql之前开启事务
- 提交事务:commit()
- 当所有sql都执行完提交事务
- 回滚事务:roolback()
- 在catch中回滚事务
- 开启事务:setAutoCommit(boolean autoCommit):调用该方法设置参数为false。即开启事务