• JDBC 关闭数据库连接与自动提交【转】


     // Jdbc关闭数据库连接时,会隐含一个提交事务的操作
    
                
                private final static String DB_DRIVER = "oracle.jdbc.driver.OracleDriver";
            private final static String DB_CONNECTION = "jdbc:oracle:thin:@127.0.0.1:1521:mydb01";
            private final static String DB_NAME = "scott";
            private final static String DB_PWd = "scott";
         
            
            //jdbc关闭自动提交. 在对数据库的操作未提交时,当conn.close()时,会默认先提交事务,再关闭连接.
            public static void test1() {
                Connection conn = null;
                CallableStatement callStmt = null;
                PreparedStatement ps = null;
                try {
                    Class.forName(DB_DRIVER);
                    conn = DriverManager.getConnection(DB_CONNECTION, DB_NAME, DB_PWd);
                    conn.setAutoCommit(false); //关闭自动提交
                    ps = conn.prepareStatement("insert into t_user values (?, ?, ?)");
                    ps.setString(1, "1");
                    ps.setString(2, "1");
                    ps.setString(3, "1");
                    int results = ps.executeUpdate();
                    //conn.commit();//不手动提交
                    System.out.println("插入了" + results + "条: ");
         
                } catch (Exception e) {
                    try {
                        conn.rollback();
                    } catch (SQLException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                    }
                    e.printStackTrace(System.out);
                } finally {
                    try {
                        conn.setAutoCommit(true);
                    } catch (SQLException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    if (null != callStmt) {
                        try {
                            callStmt.close();
                        } catch (SQLException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    }
                    if (null != conn) {
                        try {
                            conn.close();// jdbc关闭自动提交. 在jdbc未提交时,当conn.close()时,会默认先提交事务,再关闭连接.
                        } catch (SQLException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    }
                }
            }
            
            
            //jdbc默认自动提交. 在对数据库的操作未手动提交时,也会立即提交到数据库并生效
            public static void test2() {
                Connection conn = null;
                CallableStatement callStmt = null;
                PreparedStatement ps = null;
                try {
                    Class.forName(DB_DRIVER);
                    conn = DriverManager.getConnection(DB_CONNECTION, DB_NAME, DB_PWd);
                    // conn.setAutoCommit(false); //jdbc默认自动提交
                    ps = conn.prepareStatement("insert into t_user values (?, ?, ?)");
                    ps.setString(1, "1");
                    ps.setString(2, "1");
                    ps.setString(3, "1");
                    int results = ps.executeUpdate();  //注意,这一步操作就被提交到数据库了!!!
                    //conn.commit();//不手动提交
                    System.out.println("插入了" + results + "条: ");
         
                } catch (Exception e) {
                    try {
                        conn.rollback();
                    } catch (SQLException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                    }
                    e.printStackTrace(System.out);
                } finally {
                    try {
                        conn.setAutoCommit(true);
                    } catch (SQLException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    if (null != callStmt) {
                        try {
                            callStmt.close();
                        } catch (SQLException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    }
                    if (null != conn) {
                        try {
                            conn.close();//  jdbc关闭连接
                        } catch (SQLException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    }
                }
            }

    完全引用自

    JDBC 关闭数据库连接与自动提交--https://blog.csdn.net/hjiacheng/article/details/53193361

  • 相关阅读:
    WCF开发实战系列二:使用IIS发布WCF服务
    电脑远程登录控制Android手机Webkey For Android使用教程
    WCF的https安全(ssl)访问实例
    IIS中“使用 XSL 样式表无法查看 XML 输入”问题的解决
    服务器禁止被ping的设置方法(图文)
    Windows Server 2008 R2 MSDN
    IIS7配置https
    C# 检查网络是否连通 判断远程文件是否存在 C#获取程序路径的方法中需要注意的地方
    c#,winform,treeview,选中节点,选中相应的全部子节点,取消节点,取消父节点,小技巧
    sql大全(一)
  • 原文地址:https://www.cnblogs.com/whatlonelytear/p/9403603.html
Copyright © 2020-2023  润新知