gpt4 book ai didi

java - Executebatch 无法仅在数据库中插入最后一行

转载 作者:行者123 更新时间:2023-12-01 12:02:28 25 4
gpt4 key购买 nike

我正在这样做,但在数据库最后一行仅更新。

我检查了那里是否有20行,所有行都是在addbatch时添加的,但在executeBatch时,数据库中仅更新了最后一行。

ArrayList<String> li = (ArrayList<String>)request.getAttribute("VL01Data");
Iterator<String> it = li.iterator();
String splitter = request.getAttribute("SPLITTER") != null ?(String)request.getAttribute("SPLITTER"): "!";

String QueryIn = "INSERT INTO ......) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";

while(it.hasNext()) {
String value =it.next().toString();

StringTokenizer strTok = new StringTokenizer(value,splitter);
String S = strTok.nextElement().toString().trim();
String I = strTok.nextElement().toString().trim();
String M = strTok.nextElement().toString().trim();
String d = strTok.nextElement().toString();
String R = strTok.nextElement().toString().trim();
String Pu = strTok.nextElement().toString().trim();
.
.

pstmt = con.prepareStatement(QueryIn);
pstmt.setString(1,e );
pstmt.setString(2, r);
pstmt.setString(3, y);
pstmt.setString(4, d);
pstmt.setString(5, y);
pstmt.setString(6, i);
.
.
pstmt.setString(19,f1 );
pstmt.setString(20,f2);
pstmt.addBatch();
}

pstmt.executeBatch();
con.commit();

最佳答案

不要在循环体中重新准备语句。在循环之前准备一次,例如

pstmt = con.prepareStatement(QueryIn);

while(it.hasNext()) {
String value = it.next().toString();

StringTokenizer strTok = new StringTokenizer(value,splitter);
String S = strTok.nextElement().toString().trim();
String I = strTok.nextElement().toString().trim();
String M = strTok.nextElement().toString().trim();
String d = strTok.nextElement().toString();
String R = strTok.nextElement().toString().trim();
String Pu = strTok.nextElement().toString().trim();

// pstmt=con.prepareStatement(QueryIn);
// ...

当您通过调用 prepareStatement 重新分配 pstmt 引用时,它会丢失之前的(批处理)状态(在每次循环迭代中),因此,当您调用 executeBatch() 时,您只会获得最后一个。

关于java - Executebatch 无法仅在数据库中插入最后一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27896309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com