import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
public class JDBCUtils {
private static JDBCUtils jdbcUtils = null;
private static String jdbc_driver; //jdbc驱动
private static String jdbc_url; //jdbc连接Url
private static String user_name; //jdbc连接用户名
private static String user_password; //jdbc连接密码
private static String batch_size; //批量提交数
private JDBCUtils() { }
/**
* 创建JDBC工具类实例
* @return
*/
public static synchronized JDBCUtils getInstance(){
if(jdbcUtils == null){
jdbcUtils = new JDBCUtils();
}
return jdbcUtils;
}
/**
* 获取 数据库连接
* @return
*/
public Connection getConnection(){
try {
Class.forName(jdbc_driver);
Connection conn = DriverManager.getConnection(jdbc_url, user_name, user_password);
return conn;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 关闭数据库相关连接
* @param connection
*/
public void close(ResultSet rs, Statement st, Connection conn) {
try {
if(rs != null)rs.close();rs=null;
} catch (SQLException e) {
e.printStackTrace();
}finally{
try {
if (st != null) st.close();st=null;
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (conn != null) conn.close();conn=null;
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
/**
* 关闭数据库相关连接
* @param connection
*/
private void close(PreparedStatement pstmt, Connection conn) {
try {
if(pstmt != null)pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}finally{
try {
if (conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 增加单条数据
* @param sql sql语句
* @param values 参数值
* @return 是否增加成功
* @throws SQLException
*/
public boolean saveOrUpdate(String sql,Object ... values) throws SQLException{
Connection conn = getConnection(); //获取数据库连接
PreparedStatement pstmt = null;
try {
conn.setAutoCommit(false); //设置手动提交事务
pstmt = conn.prepareStatement(sql); //创建PreparedStatement对象
//赋值
for (int i = 0; i < values.length; i++) {
pstmt.setObject(i+1, values[i]);
}
pstmt.execute(); //执行操作
conn.commit(); //提交事务
close(pstmt,conn); //关闭相关连接
} catch (SQLException e) {
e.printStackTrace();
}finally{
close(pstmt,conn); //关闭相关连接
}
return true;
}
/**
* 删除
* @param sql
* @return
*/
public boolean batchDelete(String sql){
Connection conn = getConnection(); //获取数据库连接
PreparedStatement pstmt = null;
try {
conn.setAutoCommit(false); //设置手动提交事务
pstmt = conn.prepareStatement(sql); //创建PreparedStatement对象
pstmt.execute(); //执行操作
conn.commit(); //提交事务
close(pstmt,conn); //关闭相关连接
} catch (SQLException e) {
e.printStackTrace();
}finally{
close(pstmt,conn); //关闭相关连接
}
return true;
}
/**
* 批量增加与修改
* @param sql insert or update 语句
* @param params 参数集合
* @return
* @throws SQLException
*/
public boolean batchSaveOrUpdate(String sql,List<Object[]> paramList) {
int count = Integer.parseInt(batch_size)-1;
Connection conn = getConnection(); //获取数据库连接
PreparedStatement pstmt = null;
try {
conn.setAutoCommit(false); //设置手动提交事务
pstmt = conn.prepareStatement(sql); //创建PreparedStatement对象
//赋值
for (int i = 0; i < paramList.size(); i++) {
Object[] values = paramList.get(i);
for (int j = 0; j < values.length ; j++) {
pstmt.setObject(j+1, values[j]);
}
pstmt.addBatch();
//批量数等于 batch_size 时 提交数据
if(i != 0 && (i%count == 0)){
int ids[] = pstmt.executeBatch(); //执行操作
if(ids.length == count+1 ){
conn.commit(); //提交事务
}else{
conn.rollback(); //事务回滚
}
pstmt.clearBatch();
}
}
int ids[] = pstmt.executeBatch(); //执行操作
if(ids.length == paramList.size()%(count+1) ){
conn.commit(); //提交事务
}else{
conn.rollback(); //事务回滚
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
close(pstmt,conn); //关闭相关连接
}
return true;
}
public static void main(String[] args) throws SQLException {
// JDBCUtils utils = JDBCUtils.getInstance();
//
//
// String sql = "insert into tbl_yitiansystem_systemlog (id,message) values(?,?);";
// List paramList = new ArrayList();
// for (int i = 0; i < 10; i++) {
// String [] param = new String[]{i+"",i+""};
// paramList.add(param);
// }
//
// boolean t = utils.batchSaveOrUpdate(sql, paramList);
// System.out.println(t);
//
}
}
分享到:
相关推荐
驱动管理器负责加载和管理数据库驱动,JDBC API提供了一组接口和类供应用程序调用,而数据库驱动则是数据库厂商提供的实现这些接口的具体代码,用于与特定的数据库通信。 2. **JDBC基本操作流程** 使用JDBC通常...
"CH341-i2c工具"是一款专用于与I2C总线设备进行通信的软件工具,它基于CH341芯片驱动程序,能够帮助用户在个人计算机上与使用I2C接口的硬件设备进行交互。CH341芯片是一种常见的USB到串行/并行接口转换器,广泛应用...
标题中的“CH341DP_SPI下载工具”指的是一个专门用于通过SPI接口对单片机进行编程的软件,其中CH341DP是该工具所使用的USB转SPI接口芯片。这款工具适用于那些需要通过USB接口对51系列或AVR系列单片机进行固件更新或...
本文将详细讲解如何使用JDBC(Java Database Connectivity)来向一个名为“Students”的数据库表中插入数据,同时也会涉及Oracle数据库和Java的相关知识点。 首先,JDBC是Java语言与各种数据库交互的一套标准接口,...
软件介绍: CH7511LVDS配置说明及刷新工具资源列表:CH... CH7511B EEPROMMap GUI-v0.01.14.exe CH7511B.EXE CH7511B_00_00_C2.bin ch7511b_dos.jpg CH7511B-Utility-v1-225.exe SiUSBXp.dll VCI_GYI2C.dll
CH9329配置&测试工具,用于在电脑上直接配置CH9329相关模式
CH9329是一款常用的USB接口控制器,特别适用于HID(Human Interface Device)类设备的开发。这个压缩包文件包含了关于CH9329芯片的详细资料和相关的辅助设计工具,帮助开发者更有效地进行USB HID设备的设计和调试。 ...
在实际应用中,CH554的快速批量数据上传下载能力尤其适用于需要大量数据交换的场景,如传感器网络的数据采集、嵌入式系统的固件更新、测试与测量设备的数据传输等。CH554的高集成度使其在设计上更具灵活性,可以减少...
《CH7511LVDS配置说明及刷新工具详解》 在嵌入式系统和显示技术领域,CH7511是一款广泛应用的LVDS(Low Voltage Differential Signaling,低电压差分信号)接口控制器,主要用于处理视频信号的传输。本文将深入探讨...
CH340驱动工具是一款专为CH340系列芯片设计的驱动程序,适用于多种操作系统,包括Windows XP、Windows 7、Windows 8以及Windows 10。这款驱动的主要功能是帮助用户在计算机上识别和操作使用CH340芯片的USB到串口转换...
USB转串口CH341/CH340的WINDOWS驱动程序安装包 支持WINDOWS 98/ME/2000/XP/Server 2003/VISTA/ Server 2008/Win7/Win8/Win10 32位/64位,通过微软数字签名认证, 在计算机端将USB设备仿真为标准Serial串口设备COM? ...
CH341T模块I2C功能专用工具,具有定时发送功能。因为没法设置不收取积分。如果没积分的朋友可以通过如下下载 链接:...
1 在c盘下以管理员权限运行i2c_driver.EXE,安装驱动; 安装完之后打开设备管理器,会新增外部接口设备,注意这里不是新增端口;... >>外部接口>>USB-EEP/I2X...CH341A 2 打开供应商的i2c工具;即可使用iic读写;
CH340串口驱动和串口调试工具
SQL Server 2005 JDBC Driver_1.1_CH中文开发文档,用SQL Server 2005数据库做项目的必备文档。
"ch341a_擦除_00"和"ch341a擦除_exp"标签可能是指擦除芯片的两种模式:全芯片擦除(00)和扩展擦除(exp)。全芯片擦除会清除整个芯片的所有存储区,而扩展擦除可能针对特定的存储分区或者更精细的擦除选项。 最后...
Log4jdbc 是一个 Logging 工具,能够打印完整的 SQL 语句,包括参数 replacement,从而帮助开发者更好地维护和调试项目。下面我们将详细介绍如何在 SpringBoot 项目中使用 Log4jdbc 打印完整的 SQL 语句。 一、...
CH340驱动工具是一款专为CH340系列USB转串口芯片设计的驱动程序,它使得用户可以通过USB接口连接并通信到各种基于串口的设备,如Arduino开发板、模块化电子设备等。CH340芯片因其性价比高、兼容性强的特点,在DIY...
char ch = fileName.charAt(i); // Replace invlid chars: \\/:*?\"| switch (ch) { case '\\': case '/': case ':': case '*': case '?': case '\"': case ' case '>': case '...
《CH372DBG:深入理解CH372芯片及其调试工具》 CH372DBG.zip 是一个针对CH372芯片的调试工具包,它包含了必要的软件代码和编译好的执行程序,使得开发者能够对CH372芯片进行有效的调试和应用开发。这个工具包在...