黑马程序员技术交流社区
标题:
[石家庄校区]JavaWEB09-JDBC
[打印本页]
作者:
赵小光
时间:
2017-11-26 23:08
标题:
[石家庄校区]JavaWEB09-JDBC
重点 C3P0
配置环境变量,是为了让程序在任意环境下执行
操作系统
alt+shift+r选中快速改名字
Ctrl+2+L快速生成接收对象
alt+shift+z快速生成try/catch
垃圾回收器 第二次检查为null被回收
127.0.0.1 = localhost 本机IP
启动本地127.0.0.1:8080/文件夹名/indext.html
<textarea>中间给值</textarea>
JUnit 4 Test测试,
注意:类名不能用Text,方法不能有返回值,用public void修饰,不能有参数必须是空参
JAVA_HOME 64
Eclipse 64
项目JRE 可以给项目指定一个JRE
使用JDBC进行CRUR的操作
JDBC:Java DateBase Connectivity, Java数据库的连接,是SUN公司统一提供的一套接口规范(JDBC),数据库生产商提供实现
驱动:两个硬件设备之间通信的桥梁
JDBC开发步骤
注册驱动
获得连接
获得执行SQL语句对象
释放资源
总结JDBC的API 为什么使用批处理?
批量插入,批量删除修改 效率
Connection
创建执行SQL对象
进行事务管理
Statement
执行SQL语句
执行批处理 批量插入,批量删除修改
一批SQL一起执行
addBatch()
clearBatch()
executeBatch()
ResultSet
获得结果集中的数据
getxxx(int idx); 通过列号
getxxx(String name);通过列名,一般使用这个
默认情况下:next();
正常情况下结果集只能向下
连接池
SUN公司提供的连接池接口(javax.sql.DateSource)
增强Connection的close方法
增强Java类中的某个方法???
1 继承
能够控制这个类的构造的时候,才可以使用继承
2 装饰者模式
包装的对象和被包装的对象都要实现相同的接口
包装的对象中需要获得到被包装对象的引用
缺点:如果接口发的方法比较多,增强其中的某个方法,其他的功能的方法需要原有调用
1 定义一个被包装类的引用
2 通过构造方法对引用赋值
3 改造要升级的方法
3 动态代理的方式
被增强的对象实现接口就可以
常见的开源的数据库连接池
DBCP
C3P0(重点) 可以对空闲连接进行回收 Hibernate,Spring支持C3P0
Tomcat 内置连接池
DBCP连接池的使用
1 引入DBCP连接池的jar包
2 编写DBCP代码
手动设置参数
配置文件设置参数
【
DBCP
连接池的使用】
第一步:引入
DBCP
连接池的
jar
包
.
第二步:编写
DBCP
代码:
*
手动设置参数
:
*
配置文件设置参数
:
【
DBCP
连接池的使用】
@Test
/**
*
手动方式
:
*/
public void demo1(){
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql:///web_07");
dataSource.setUsername("root");
dataSource.setPassword("123");
try{
//
获得连接
:
conn = dataSource.getConnection();
//
编写
SQL:
String sql = "select * from category";
//
预编译
SQL:
stmt = conn.prepareStatement(sql);
//
执行
SQL:
rs = stmt.executeQuery();
while(rs.next()){
System.out.println(rs.getInt("cid")+" "+rs.getString("cname"));
}
}catch(Exception e){
e.printStackTrace();
}finally{
JDBCUtils.release(rs,stmt, conn);
}
}
@Test
/**
*
配置文件方式
:
*/
public void demo2(){
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
Properties properties = new Properties();
try{
properties.load(new FileInputStream("src/dbcpconfig.properties"));
DataSource dataSource = BasicDataSourceFactory.createDataSource(properties);
//
获得连接
:
conn = dataSource.getConnection();
//
编写
SQL:
String sql = "select * from category";
//
预编译
SQL:
stmt = conn.prepareStatement(sql);
//
执行
SQL:
rs = stmt.executeQuery();
while(rs.next()){
System.out.println(rs.getInt("cid")+" "+rs.getString("cname"));
}
}catch(Exception e){
e.printStackTrace();
}finally{
JDBCUtils.release(rs,stmt, conn);
}
}
C3P0连接池的使用: ComboPooledDataSource(核心类)
1 引入C3P0jar包
2 编写C3P0代码
手动设置参数
配置文件设置参数
C3P0改造类
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2