Java 如何为每个值更改准备语句中的值
为了成批执行insert,我正在执行下面的代码Java 如何为每个值更改准备语句中的值,java,jdbc,sql-insert,Java,Jdbc,Sql Insert,为了成批执行insert,我正在执行下面的代码 String idlist=1,2,3; PreparedStatement stmt = conn .prepareStatement("INSERT INTO TEST.SAMPLE VALUES" + " (?, ?, ?, ?, ?, ?, ?,?,ARRAY("+ idlist +"))"; for (int i = 1; i <= ITERATION_MAX; i++) {
String idlist=1,2,3;
PreparedStatement stmt = conn
.prepareStatement("INSERT INTO TEST.SAMPLE VALUES"
+ " (?, ?, ?, ?, ?, ?, ?,?,ARRAY("+ idlist +"))";
for (int i = 1; i <= ITERATION_MAX; i++) {
idlist=listofdata.get(i).get_idlist();
stmt.setInt(1, listofdata.get(i).get_id());
stmt.setInt(2, listofdata.get(i).get_name());
stmt.setInt(3, listofdata.get(i).get_place());
stmt.setInt(4, listofdata.get(i).get_year());
stmt.setInt(5, listofdata.get(i).get_day());
stmt.setInt(6, listofdata.get(i).get_rollno());
stmt.setInt(7, listofdata.get(i).get_main_subject());
stmt.setArray(8, listofdata.get(i).get_elective());
stmt.addBatch();
}
stmt.executeBatch();
String idlist=1,2,3;
PreparedStatement stmt=conn
.prepareStatement(“插入测试样本值”
+“(?,?,?,,,,,,,,,,,数组(“+idlist+”)”;
对于(int i=1;i如果您不知道在idlist
中有多少ID,则无法使用相同的准备语句,因为参数的数量会发生变化(即的数量?
)
Prepared语句只能与完全相同的SQL字符串一起使用
但似乎必须始终具有相同数量的参数,因为它们是表中的列
然后用相应的?
号构建SQL字符串。或者,如果它们可以为空(我想是这样),则为所有列使用?
号
然后,当您设置参数时,您需要在idlist中循环,设置available,其余的参数设置为null。我希望SCHEMA.TABLE是您故意混淆的,而不是您正在使用的名称。需要有人告诉您这是一个非规范化的模式。您的列表可以更好地规范为1:many父子关系ign键关系。我不认为问题在于父子外键关系。问题在于如何在每个准备好的语句中更新idlist的值。我认为您不理解规范化是什么。@duffymo在许多情况下,需要并使用非规范化的表(例如OLAP星型架构中的事实表)是的,但我怀疑这是其中之一。