java - 插入多行 - java 准备好的语句失败

标签 java javascript mysql rhino

--已解决--结果是我们的 Shareplow 安装出现问题--感谢大家的尝试--

根据Performance of MySQL Insert statements in Java: Batch mode prepared statements vs single insert with multiple values上的答案我正在尝试使用批量插入准备好的语句。问题是,仅插入第一行。

我的代码的相关部分

var sql2 = 'INSERT INTO ' + memtable2 + ' (' + locNameCol2 + ', ' + sectTypeCol + ', '
+ sectPathCol + ') VALUES ';
var cntr = 0;

for (var key in polyObj)//pass sub section paths in an object.
{
  if(cntr){
    sql2 += ',';
  }
  sql2 += '(?,?,?)';
  cntr = 1;
}

var s2 = con2.prepareStatement(sql2);
cntr = 0;
for (var key in polyObj)
{
  indxOffset = 3*cntr;
  s2.setString(indxOffset+1 , fieldNameVal);
  s2.setString(indxOffset+2 , 'Poly');
  s2.setString(indxOffset+3 , polyObj[key]);
  rval += 'index offset ' + indxOffset;
  cntr++;
}
s2.execute();

第一行插入正常,但没有插入后续行。当我转储 sql2 字符串时,我发现它针对 polyObj 中的属性数量正确构建(我认为)。因此,如果 polyObj 有 3 个属性,则 sql 将是: Insert into table (col1, col2, col3) values (?,?,?),(?,?,?),(?,?,?) 我的数据库中是否有某些设置可以阻止多行插入?我只是做错了什么吗?完全被难住了。

提前致谢。

最佳答案

考虑使用带有executeBatch()的PreparedStatement。

String sql = "insert into foo (x,y,z) values (?,?,?)
PreparedStatement ps = connection.prepareStatement(sql);
ps.setObject(1, "a1");
ps.setObject(2, "b1");
ps.setObject(3, "c1");
ps.addBatch();
ps.setObject(1, "a2");
ps.setObject(2, "b2");
ps.setObject(3, "c2");
ps.addBatch();
ps.setObject(1, "a3");
ps.setObject(2, "b3");
ps.setObject(3, "c3");
ps.addBatch();
ps.executeBatch();

关于java - 插入多行 - java 准备好的语句失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15792782/

相关文章:

javascript - URL 中的数字逐渐增加 - JavaScript

PHP/MySQL 根据另一个表中的项目列表从表中选择?

java - 找到一个独特的定位器 Selenium WebDriver

JavaMail : Java. awt.datatransfer.Transferable 不存在

javascript - Polymer ready() 和事件监听器

javascript - 处理 http 服务器崩溃

php - 加载文件中的数据给我一个访问被拒绝的权限错误。我还能如何将文本文件导入数据库中的表中?

mysql - 了解 MySQL 查询优化器

java - 面向对象的三地址代码生成

java - 未捆绑 JRE 的 Mac 和 Windows 打包 Jar 文件