本帖最后由 哥.兜裡有煙 于 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:工具类: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;
}
}
|
|