数据来源String str[][]={{"1","a"},{"2","b"},{"3","c"},{"4","d"},{"5","b"},{"6","f"},{"7","e"},{"8","f"},{"9","g"},{"10","y"}};处理代码:
Data da=new Data();                             //数据库获取连接
Connection conn=da.getConnection();
DatabaseMetaData dbmData = conn.getMetaData();if (dbmData.supportsBatchUpdates())
{
      PreparedStatement psStatement = null;
      String sql="insert into test (id,name)values(?,?)";
      psStatement = conn.prepareStatement(sql);         int i=1;
      while(i<str.length)
      {
psStatement.setInt(1,Integer.parseInt(str[i][0]));

psStatement.addBatch();
psStatement.setString(2,str[i][1]);
psStatement.addBatch();
i++;
      }
        psStatement.executeUpdate(); 
 }
运行结果:数据库中只有10,y两个数据。求解决指导!

解决方案 »

  1.   

    覆盖了,while(i<str.length){
      PreparedStatement psStatement = null;
      String sql="insert into test (id,name)values(?,?)";
      psStatement = conn.prepareStatement(sql);
      psStatement.setString(1,str[i][0]);
      psStatement.setString(2,str[i][1]);
      psStatement.executeUpdate(); 
      psStatement.close();
    }
      

  2.   

    psStatement.executeUpdate(); 改成psStatement.executeBatch(); 
      

  3.   


    我前面使用的也是这样,但是有异常
    com.microsoft.jdbc.base.BaseBatchUpdateException: [Microsoft][SQLServer 2000 Driver for JDBC]Invalid parameter binding(s).
    at com.microsoft.jdbc.base.BasePreparedStatement.executeBatchEmulation(Unknown Source)
    at com.microsoft.jdbc.base.BasePreparedStatement.executeBatch(Unknown Source)
    at org.apache.tomcat.dbcp.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297)
    at org.apache.tomcat.dbcp.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297)
    at com.servlet.Test.puess(Test.java:97)
    at com.servlet.Test.doGet(Test.java:36)
      

  4.   


    搞定了,还需要把第一个psStatement.addBatch();去掉。
      

  5.   

    psStatement.executeUpdate(); 写在while里面。
      

  6.   

    第一句 psStatement.addBatch(); 删掉 试试