JDBC
JDBC
什么是JDBC:
是用于执行SQL语句的java API
什么是数据库驱动
驱动:两个设备(应用)之间通信的桥梁。
入门: (步骤)
1.首先创建数据库和表
2.引入JAR包
3.代码实现:
第一步:加载驱动 Class.forName("com.mysql.jdbc.Driver");
第二步:获得连接 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/数据库", "账户", "密码");
第三步:基本操作 (获得对象--编写语句--执行语句)
获得对象: createStatement()
编写语句: String sql = "select * from user";
执行语句: ResultSet executeQuery(String sql);
执行查询(执行select语句)。
int executeUpate(String sql);
执行修改,添加,删除的SQL语句
遍历语句: rs.next()
第四步:释放资源 rs.close();
固定格式:
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/数据库", "账户", "密码");
@Test
public void demo1() throws Exception{
// 1.加载驱动
Class.forName("com.mysql.jdbc.Driver");
// 2.获得连接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/web_test3", "root", "abc");
//执行SQL
// 3.1获得执行SQL语句的对象
Statement statement = conn.createStatement();
// 3.2编写SQL语句:
String sql = "select * from user";
// 3.3执行SQL:
ResultSet rs = statement.executeQuery(sql);
// 3.4遍历结果集:
while(rs.next()){
System.out.print(rs.getInt("id")+" ");
System.out.print(rs.getString("username")+" ");
System.out.print(rs.getString("password")+" ");
System.out.print(rs.getString("nickname")+" ");
System.out.print(rs.getInt("age"));
System.out.println();
}
// 4.释放资源
rs.close();
statement.close();
conn.close();
连接池的概述:
连接池是装有连接的容器,使用连接的话,可以从连接池中进行获取,使用完成之后将连接归还给连接池。
连接池的原理:
![](https://images2018.cnblogs.com/blog/1470026/201808/1470026-20180823141108646-633295795.png)
将原有的连接的close方法改为归还。
现在要做的事情就是将原有的close方法的逻辑改为归还。(增强一个类中的方法)。
如何增强一个类中的方法
一种:采用继承的方式:
继承这种增强是最简单,但是是有使用条件的:必须能够控制这个类的构造!!!
二种:采用装饰者模式:
装饰者模式使用条件:
* 一、增强的类和被增强的类实现相同的接口
* 二、在增强的类中获得被增强的类的引用
三种 : 动态代理的方式
C3P0连接池的使用:
手动设置参数的方式:
@Test /** * 手动设置参数的方式: */ public void demo1(){ Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try{ // 获得连接:从连接池中获取: // 创建连接池: ComboPooledDataSource dataSource = new ComboPooledDataSource(); // 设置连接参数: dataSource.setDriverClass("com.mysql.jdbc.Driver"); dataSource.setJdbcUrl("jdbc:mysql:///web_test4"); dataSource.setUser("root"); dataSource.setPassword("abc"); // 从连接池中获得连接: conn = dataSource.getConnection(); // 编写SQL: String sql = "select * from account"; // 预编译SQL: pstmt = conn.prepareStatement(sql); // 执行SQL: rs = pstmt.executeQuery(); while(rs.next()){ System.out.println(rs.getInt("id")+" "+rs.getString("name")+" "+rs.getDouble("money")); } }catch(Exception e){ e.printStackTrace(); }finally{ JDBCUtils.release(rs, pstmt, conn); } }
采用配置文件的方式:
配置:
![](https://images2018.cnblogs.com/blog/1470026/201808/1470026-20180823141418792-1252847442.png)