黑马程序员技术交流社区
标题:
JDBC学习笔记总结
[打印本页]
作者:
哥.兜裡有煙
时间:
2017-12-3 18:24
标题:
JDBC学习笔记总结
本帖最后由 哥.兜裡有煙 于 2017-12-3 18:28 编辑
【JDBC的概述】
JDBC:Java DataBase Connectivity Java数据库的连接.
是SUN公司统一提供的一套接口规范(JDBC).各个数据库生产商提供实现.
驱动:两个硬件设备之间通信的桥梁.
【JDBC的开发步骤】
注册驱动:
获得连接:
获得执行SQL语句对象:
释放资源:
JDBC的API:
DriverManager java.sql
Connection:连接. java.sql
* 获得连接.
* 执行事务的管理.
Statement: java.sql
* 执行SQL语句.
* int executeUpdate(String sql);
* ResultSet executeQuery(String sql);
* boolean execute(String sql);
ResultSet: java.sql
* getXXX(int idx),getXXX(String name);
连接池:
javax.sql
自定义连接池:(了解)
增强一个类中的某个方法有几种方式:
继承:
控制控制这个类的构造.
装饰者模式:
增强的类和被增强类实现相同的接口.
在增强类中获得被增强的类引用.
接口中方法过多,增强其中一个方法,其他方法都要重写.
动态代理:
被增强的类实现了接口即可.
编写代码的时候麻烦.
DBCP:
C3P0:
DbUtils:工具类:
使用DBUtils完成CRUD的操作 ```
C3P0改造后的工具类
public class JDBCUtils {
private static final ComboPooledDataSource DATA_SOURCE =new ComboPooledDataSource();
/**
* 获得连接的方法
*/
public static Connection getConnection(){
Connection conn = null;
try {
conn = DATA_SOURCE.getConnection();
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
public static DataSource getDataSource(){
return DATA_SOURCE;
}
/**
* 释放资源的方法
*/
public static void release(ResultSet rs,Statement stmt,Connection conn){
if (rs != null) {
try {
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
// 垃圾回收尽快回收对象.
rs = null;
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
// 垃圾回收尽快回收对象.
stmt = null;
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
// 垃圾回收尽快回收对象.
conn = null;
}
}
public static void release(Statement stmt,Connection conn){
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
// 垃圾回收尽快回收对象.
stmt = null;
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
// 垃圾回收尽快回收对象.
conn = null;
}
}
/**
* 元数据提取
* @param sql
* @param obj
* @return
* @throws SQLException
*/
public static int updata(String sql ,Object...obj) throws SQLException {
Connection conn = DATA_SOURCE.getConnection();
PreparedStatement stmt = conn.prepareStatement(sql);
int count =stmt.getParameterMetaData().getParameterCount();
for (int i = 0; i < count; i++) {
stmt.setObject(i+1, obj
);
}
int result = stmt.executeUpdate();
release(stmt, conn);
return result;
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2