一. JDBC简介
1.什么是JDBC?
- JDBC就是使用java语言来操作关系型数据库的一套API
- 官方sun公司定义的一套操作所有关系型数据库的规则,即接口;
2.JDBC的好处?
- 可随时更换底层数据库,访问数据库的java代码基本不变
3.JDBC实现的步骤
-
创建工程,导入驱动jar包
-
注册驱动(可不写)
- class.forName("com.mysql.jdbc.Driver")
-
获取连接
- Connection conn = DriverManager.getConnection(url,user,pwd);
-
定义SQL语句
- String sql = ”update 。。。“
-
获取执行SQL对象
- Statement stmt = conn.createStatement();
-
执行SQL
- int count = stmt.executeUpdate(sql);
- ResultSet rs = stmt.executeQuery(sql);
-
处理返回结果
-
if(count>0){
System.out.println("修改成功~");
}else{
System.out.println("修改成功~");
}
-
while(rs.next) {
rs.getXxx(参数);
}
-
-
释放资源
- rs.close();
- stmt.close();
- conn.close();
二.JDBC-API
1.API--DriverManager
- 作用:
- 注册驱动(类加载时,静态代码块自动注册,且可以不写)
- 获取数据库的连接
2.API--Connection
-
Connection(数据库连接对象)作用:
-
获取执行SQL对象
-
普通执行SQL对象:Statement createStatement()
-
预编译SQL的执行SQL对象:防止SQL注入
PreparedStatement preparedStatement(sql)
-
执行存储过程的对象
CallableStatement prepareCall(sql)
-
-
管理事务
- 开启事务 setAutiCommit(boolean autoCommit)ture为自动提交事务 false为手动提交事务,即开启事务
- 提交事务 commit()
- 回滚事务 rollback()
-
3.API--Statement
- 作用:执行SQL语句
- int executeUpdate(sql):用于执行DML、DDL语句
- ResultSet executeQuery(sql):用于执行DQL语句
4.API--ResultSet
- ResultSet(结果集对象)作用:封装DQL查询语句的结果
- boolean next() 判断当前行是否为有效行
- getXxx() 获取数据
5.API--PreparedStatement
-
作用:预编译SQL语句并执行,防止SQL注入,将敏感字符进行转义
-
获取PreparedStatement对象
- String sql = ”select * from user where username = ? and password = ?“
- PreparedStatement pstmt = conn.preparedStatement(sql)
设置参数值
pstmt.setXxx(参数1,参数2)
执行sql
stmt.executeUpdate() / stmt.executeQuery()
-
在url中开启预编译功能:useServerPerpStmts = true;
三.JDBC-数据库连接池
1.简介
- 数据库连接池是个容器,负责分配,管理数据库连接 Connection
- 它允许应用程序重复使用一个现有的数据库连接,而不是再重写建立一个
- 好处:资源重用,提升系统响应速度,避免数据库连接遗漏
2.数据库连接池实现
-
官方标准接口:DataSource,由第三方组织实现此接口
-
常用的数据库连接池:Druid(德鲁伊),C3P0,DBCP
3.Driud使用
- 导入jar包,driud-1.1.12.jar
- 定义配置文件
- 加载配置文件
- Properties prop = new Properties();
- prop.load(new FileInputStream(”src/druid.“))
- 获取数据库连接池对象
- DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
- 获取连接
- Connection conn = dataSource.getConnection();