那位大侠知道在Java数据库操作时使用PreparedStatement执行多条SQL语句时如何使用事务
最好能给个例子。 

解决方案 »

  1.   

    事务控制是connection的事情
    connection.setAutoCommit(false);//statement 可以是各种statement,默认不用事务是自动提交
    //若用事务就把代码写在这之间connection.commit();在给你一个例子: /**
     * 从数据库中读取二进制文件 create date:2009-5-13 author:Administrator
     * 
     * @param file
     * @param conn
     */
    public void getBinary(String file, Connection conn) { // 注意二进制文件从数据库中读取时所用到的类,以及类的包装转换过程
    try {

    PreparedStatement ps = conn
    .prepareStatement("select text from bankVoice where name=?");
    ps.setString(1, file);
    Blob blob = null;
    ResultSet rs = ps.executeQuery();
    if (rs.next()) {
    blob = (Blob) rs.getBlob("text");
    }
    FileOutputStream fos = new FileOutputStream("D:\\test1.mp3");
    fos.write(blob.getBytes(1, (int) blob.length()));
    System.out.println("二进制文件获得成功"); ps.clearParameters();
    ps.close();
    fos.close(); } catch (Exception e) {
    e.printStackTrace();
    System.out.println("读取二进制文件时出现异常");
    }
    }
      

  2.   


     try {        conn = DriverManager.getConnection  ;         conn.setAutoCommit(false);//禁止自动提交,设置回滚点        stmt = conn.createStatement();        stmt.executeUpdate(“alter table …”); //数据库更新操作1        stmt.executeUpdate(“insert into table …”)&#59; //数据库更新操作2        conn.commit()&#59; //事务提交     }catch(Exception ex) {             ex.printStackTrace();         try {          conn.rollback()&#59; //操作不成功则回滚          }catch(Exception e) {         e.printStackTrace();           }}本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/friendliu/archive/2008/07/01/2602455.aspx这是一个例子,参考下。
      

  3.   

    学了hibernate就知道怎么处理了 用JDBC的话 很麻烦 不能同时处理多条