博客内容是博客主学习时候的源代码
博客主的理解都在注释上
没有解决的问题
为什么JDBCTemplate的使用有时候需要用到类的对象(.class对象)
JDBCTemplate的使用必须掌握
理解连接池的用处,连接池是管理连接对象的,
我们之前使用JDBC每用一次,就要重新建立连接,
假如:连接消耗时长100毫秒,而执行sql语句才只用20毫秒,就很大的浪费了时间
所有就出现了连接池,当系统初始化好后,连接池就被创建,连接池中会申请一些连接对象,
当用户来访问数据库时,从连接池中获取连接对象,用户访问完之后,会将连接对象归还给连接池。
连接池C3P0的使用
1,导入jar包
2,将配置文件放到src下
3,创建连接池对象
4,获取连接
5,执行sql语句
6,释放连接,并不是真正的关闭,而是归还到连接池
public class JDBC_C3P0 {
public static void main(String[] args){
Connection conn = null;
PreparedStatement prep = null;
ResultSet re = null;
PreparedStatement prep1 = null;
try {
//1,导入jar包
//2,将配置文件放到src下
//3,创建连接池对象
ComboPooledDataSource cpds = new ComboPooledDataSource();
//4,获取连接
conn = cpds.getConnection();
//开启事务
conn.setAutoCommit(false);
//获得连接后就可以进行sql语句的操作
String sql = "insert into login values (null ,?,?)";
String sql1 = "select * from login where username = ?";
//获取执行sql语句的对象
prep = conn.prepareStatement(sql);
prep1 = conn.prepareStatement(sql1);
//往?号中传参
prep.setString(1,"ksaar");
prep.setString(2,"ksaarboss");
prep1.setString(1,"root");
//执行sql语句
int i = prep.executeUpdate();
System.out.println("被影响的行数" + i);
re = prep1.executeQuery();
re.next();
String password = re.getString("password");
System.out.println("用户名为root的密码是:" + password);
conn.commit();
} catch (SQLException e) {
e.printStackTrace();
try {
if (conn != null) {
conn.rollback();
}
} catch (SQLException e1) {
e1.printStackTrace();
}
}finally {
//5,释放连接,并不是真正的关闭,而是归还到连接池
try {
if (prep1 != null) {
prep1.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (re != null) {
re.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (prep !=