执行没有异常,查看数据库一点变化没有,语句无误.

解决方案 »

  1.   

    Statement st = null;
            try {
                st = connection.createStatement();
                for (int i = 0; i < sqls.length; i++) {
                    st.addBatch(sqls[i]);
                }
                st.executeBatch();
            } catch (Exception e) {
                log.error(e.getMessage());
            }
    sqls 是个sql语句的数组
      

  2.   

    数据库没任何变化,肯定是连接这个类写得有问题.
    你至少要先写个插入语句测试一下,看看有没有和数据库连通,能否操作?
    java.sql.Statement sm = con.createStatement();
    int count = sm.executeUpdate(sqlInsert);
    if(count > 0)
    {
         System.out.println("成功");
    }
    然后把你的sql语句数组贴出来,最好把你的这个连接类的代码贴出来.
    别人才好判断.
      

  3.   

    用prepareStatement试下
    pstmt = conn.prepareStatement("DELETE FROM tab_1 WHERE id = ?");
    for (int i = 0; i < objIDArray.length; i++)
    {
    pstmt.setString(1, objIDArray[i]);
    pstmt.addBatch();
    }
    pstmt.executeBatch();
    close(pstmt);
      

  4.   

    楼上的要注意Statement和prepareStatement的区别.
    它们之间存在效率的问题,因为prepareStatement有预编译的功能.
    当反复执行某条SQL语句时,可以用prepareStatement.
    你觉得执行SQL语句数组的时候,用它合适吗?
      

  5.   

    回luyi830705() 效率换性能,我觉得很划算。
      

  6.   

    第二、
    prepareStatemen在重复改变参数的query使用效率也比较高,并不是执行某一条的效率才高。
      

  7.   

    Connection conn = ServiceLocator.getInstance().getConnection();
    conn.setAutoCommit(false);
    ps = conn.prepareStatement(sql);
    for(int i=0; i<roomids.length; i++)       ps.setString(1,ksid);
         ps.setString(2,roomids[i]);
         ps.addBatch();
    }
    ps.executeBatch(); 
    conn.setAutoCommit(true);
      

  8.   

    批量执行注意
    1.conn.setAutoCommit(false);
    2.pstmt.executeBatch();
    3.conn.commit();
    4.conn.setAutoCommit(true);你没写commit()吧??
    当自动提交关闭的情况下,不写这句,操作是不进行提交的