java web数据库PreparedStatement的问题(菜鸟系列问题,没分了)

lxpandsq 2012-03-13 03:10:32
数据来源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两个数据。求解决指导!
...全文
84 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
菖蒲老先生 2012-03-13
  • 打赏
  • 举报
回复
第一句 psStatement.addBatch(); 删掉 试试
dryZeng 2012-03-13
  • 打赏
  • 举报
回复
psStatement.executeUpdate(); 写在while里面。
lxpandsq 2012-03-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 flagiris 的回复:]
psStatement.executeUpdate();

改成

psStatement.executeBatch();
[/Quote]

搞定了,还需要把第一个psStatement.addBatch();去掉。
lxpandsq 2012-03-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 flagiris 的回复:]
psStatement.executeUpdate();

改成

psStatement.executeBatch();
[/Quote]

我前面使用的也是这样,但是有异常
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)
lxpandsq 2012-03-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ce2010 的回复:]
覆盖了,

Java code


while(i<str.length){
PreparedStatement psStatement = null;
String sql="insert into test (id,name)values(?,?)";
psStatement = conn.prepareStatement(sql);
psStatement.……
[/Quote]

我知道覆盖了,那怎么解决了?
菖蒲老先生 2012-03-13
  • 打赏
  • 举报
回复
psStatement.executeUpdate();

改成

psStatement.executeBatch();
老9 2012-03-13
  • 打赏
  • 举报
回复
覆盖了,

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();
}

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧