以下为代码:
list为ArrayList类,执行结果是只有第一条插入了,程序处于等待状态。 Connection  sqlManager = SQLManager.getConnection();  
 sqlManager.setAutoCommit(true);
 Statement stmt =  sqlManager.createStatement();
 stmt.setFetchSize(80);
    for (int i = 0;i < 10;i++){
        insertSQL[i] = "INSERT INTO SIWAKEDENPYOU_TBL VALUES(" +
          Integer.parseInt(String.valueOf(list.item(i).getAttributes().get("no"))) +",\n" +Integer.parseInt(String.valueOf(list.item(i).getAttributes().get(
          "gyo"))) +",\n'" + String.valueOf(list.item(i).getAttributes().get("kubun")) + "',\n" +Integer.parseInt(String.valueOf(list.item(i).getAttributes().get("kamoku"))) +",\n" +
          Integer.parseInt(String.valueOf(list.item(i).getAttributes().get(
          "eda"))) +",\n" +
          Integer.parseInt(String.valueOf(list.item(i).getAttributes().get(
          "code"))) +",\n" +Integer.parseInt(String.valueOf(list.item(i).getAttributes().get("year"))) +",\n" +
          Integer.parseInt(String.valueOf(list.item(i).getAttributes().get(
          "mmdd"))) +",\n'" +
          String.valueOf(list.item(i).getAttributes().get("tekiyo")) +
          "',\n'" +
          String.valueOf(list.item(i).getAttributes().get("prjno")) +
          "',\n" +
          Integer.parseInt(String.valueOf(list.item(i).getAttributes().get(
          "xyain"))) +",\n" +          
          Integer.parseInt(String.valueOf(list.item(i).getAttributes().get(
          "kin"))) +",\n"  + "101,201" +",\n"+          
          Integer.parseInt(String.valueOf(list.item(i).getAttributes().get(
          "sime"))) +   ",\n" +
          "'001','001',GETDATE(),GETDATE() " + ")";
     stmt.addBatch(insertSQL[i]);
    }
    int[] counts = stmt.executeBatch();
    stmt.close();
    sqlManager.close();

解决方案 »

  1.   

    sqlManager.setAutoCommit(true);//这个放到batchUpdate以后在插入之前先setAutoCommit(false);
      

  2.   

    修改了但是还是不行,是不是因为ArrayList使用的关系。
      

  3.   

    你用下面这个方法来遍历LinkList
       
       Iterator iter=list.iterator();
        while(iter.hasNext())
        {
          StudentScore ss=(StudentScore)iter.next();
          System.out.println(ss.getStudentID()+"'s "+ ss.getCourseName()+" Score is:"+ss.getScore());
        }
      

  4.   

    sql 语句写 String sql="insert into SIWAKEDENPYOU_TBL VALUES(?,?,?,?,?)";
    这样,有多少个参数写多少个 ?Statement stmt =  sqlManager.createStatement();
    这句改成 PreparedStatement pstmt=sqlManager.prepareStatement(sql);要先 setAutoCommit(false)给 sql 语句赋值可以用 pstmt.setString , pstmt.setXXX , 如果知道类型可以用 pstmt.setObject然后 addBatch();
    最后 executeBatch() 就行了
    最后 setAutoCommit(true);我从 db2 向 sql server 传 76k 条数据,大概不到两分种,我的机器是 C667 , 512M