Jdbc 事务
package com.j1; import java.sql.Connection; import java.sql.SQLException; import com.mysql.jdbc.PreparedStatement; public class JdbcTest1 { public void test1(){ Connection conn=null; PreparedStatement smt=null; try { conn = JdbcUnit.getConnection(); conn.setAutoCommit(false);//开启事物 smt= (PreparedStatement) conn.prepareStatement(""); smt.executeUpdate(); conn.prepareStatement(""); conn.commit();//提交事物 } catch (Exception e) { try { conn.rollback(); } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } e.printStackTrace(); }finally{ //释放资源 JdbcUnit.release(null, smt, conn); } } } //公用类 package com.j1; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ResourceBundle; import org.apache.taglibs.standard.tag.common.fmt.BundleSupport; public class JdbcUnit { private static String clazzName=null; private static String url=null; private static String username=null; private static String password=null; //读取配置文件 static{ ResourceBundle bundle=ResourceBundle.getBundle("dbinfo"); clazzName=bundle.getString("clazzName"); url=bundle.getString("url"); username=bundle.getString("username"); password=bundle.getString("password"); } public static Connection getConnection(){ loadDriver(); try { return DriverManager.getConnection(url, username, password); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); throw new RuntimeException(e); } } private static void loadDriver() { try { Class.forName(clazzName); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void release(ResultSet rs, Statement stmt, Connection conn){ if(rs!=null){ try { rs.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } rs=null; } if(stmt!=null){ try { stmt.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } stmt=null; } if(conn!=null){ try { conn.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } conn=null; } } } /** 事务为同一个Connnection对象 try catch时尽量抓到最大Exception */
无为而治
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
· 《HelloGitHub》第 108 期
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单
· Supergateway:MCP服务器的远程调试与集成工具