pull/2/head
qian 9 months ago
parent a389817de8
commit ee5a5920b7

@ -1,15 +1,23 @@
package cn.edu.hust.jdbc;
//
import cn.edu.hust.conf.ConfigurationManager;
//
import cn.edu.hust.constant.Constants;
//
import java.sql.Connection;
//
import java.sql.DriverManager;
//
import java.sql.PreparedStatement;
//
import java.sql.ResultSet;
//
import java.sql.SQLException;
//
import java.util.List;
//
import java.util.concurrent.ArrayBlockingQueue;
//
import java.util.concurrent.LinkedBlockingQueue;
// JDBCHelper类是一个用于管理数据库连接以及执行数据库相关操作的工具类
@ -64,12 +72,13 @@ public class JDBCHelper {
} catch (Exception e) {
e.printStackTrace();
}
//
};
// 获取JDBCHelper类的唯一实例对象的静态方法外部代码通过调用此方法获取该工具类的实例进而使用其提供的数据库操作功能。
public static JDBCHelper getInstance() {
return instance;
//
}
/**
@ -87,6 +96,7 @@ public class JDBCHelper {
e.printStackTrace();
}
return null;
//
}
/**
@ -98,10 +108,11 @@ public class JDBCHelper {
*/
public int excuteUpdate(String sql, Object[] params) {
int re = 0;
//
Connection conn = null;
//
PreparedStatement statement = null;
//
try {
// 从连接池中获取一个数据库连接
conn = getConnection();
@ -119,19 +130,24 @@ public class JDBCHelper {
return re;
} catch (Exception e) {
//
e.printStackTrace();
} finally {
// 无论是否执行成功,都需要将使用完的数据库连接归还到连接池中,
// 如果连接对象不为空尝试将其放回阻塞队列queue如果放回过程出现中断异常则打印栈追踪信息。
if (conn!= null) {
if (conn!= null)
//
{
try {
queue.put(conn);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//
}
return re;
//
}
// 定义一个内部接口QueryCallBack该接口中定义了一个方法process用于处理查询结果集ResultSet
@ -149,12 +165,13 @@ public class JDBCHelper {
*/
public void excuteQuery(String sql, Object[] params, QueryCallBack queryCallBack) {
Connection conn = null;
//
PreparedStatement statement = null;
//
try {
// 从连接池中获取一个数据库连接
conn = getConnection();
//
// 使用获取到的连接创建一个PreparedStatement对象用于执行带参数的SQL语句
statement = conn.prepareStatement(sql);
@ -168,6 +185,7 @@ public class JDBCHelper {
// 调用传入的回调接口对象的process方法将结果集传递进去由具体实现该接口的类来处理结果集数据。
queryCallBack.process(rs);
//
} catch (Exception e) {
} finally {
@ -179,8 +197,10 @@ public class JDBCHelper {
} catch (InterruptedException e) {
e.printStackTrace();
}
//
}
}
//
}
/**
@ -192,8 +212,11 @@ public class JDBCHelper {
*/
public int[] excuteBatch(String sql, List<Object[]> params) {
Connection connection = null;
//
PreparedStatement statement = null;
//
int[] res = null;
//
try {
// 从连接池中获取一个数据库连接
@ -209,8 +232,10 @@ public class JDBCHelper {
for (Object[] param : params) {
for (int i = 0; i < param.length; i++) {
statement.setObject(i + 1, param[i]);
//
}
statement.addBatch();
//
}
// 3. 批量执行所有添加到批处理队列中的SQL语句返回一个整数数组表示每条语句受影响的行数。
@ -218,7 +243,7 @@ public class JDBCHelper {
// 4. 最后提交事务将所有批量执行的SQL语句对数据库的修改统一提交如果执行过程中出现异常则事务会回滚。
connection.commit();
//
return res;
} catch (SQLException e) {
@ -232,8 +257,12 @@ public class JDBCHelper {
} catch (InterruptedException e) {
e.printStackTrace();
}
//
}
}
//
return res;
//
}
//
}
Loading…
Cancel
Save