修改:如何在重复值上更新java jdbc中的多行
我有一个带有多复选框的.jsp页面。我可以插入多个复选框值,但在使用更新时,它会添加当前复选框行和其他复选框值行。如果我再选中一个复选框,它应该再添加一行,以此类推 以下是我用于更新的代码: CollDAO.java:修改:如何在重复值上更新java jdbc中的多行,java,arrays,jdbc,checkboxlist,on-duplicate-key,Java,Arrays,Jdbc,Checkboxlist,On Duplicate Key,我有一个带有多复选框的.jsp页面。我可以插入多个复选框值,但在使用更新时,它会添加当前复选框行和其他复选框值行。如果我再选中一个复选框,它应该再添加一行,以此类推 以下是我用于更新的代码: CollDAO.java: //Insert checkbox records public void addColl(String qId, String[] arrayColId) { try { PreparedStatement ps = con.preparedStatement("i
//Insert checkbox records
public void addColl(String qId, String[] arrayColId) {
try {
PreparedStatement ps = con.preparedStatement("insert into colTable(qId, colId) values(?,?)");
for(int i = 0; i < arrayColId.length; i++) {
ps.setString(1, qId);
ps.setString(2, arrayColId[i]);
ps.executeUpdate();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
//插入复选框记录
public void addColl(字符串qId,字符串[]arrayColId){
试一试{
PreparedStatement ps=con.PreparedStatement(“插入colTable(qId,colId)值(?,)”;
for(int i=0;i
如果我选择2个复选框,这就是它的外观。
rowid|qID|cID--正确
:101:|:121:|:9:
:100:|:121:|:13:
//Update checkbox records
public void updateColl(String qId, String[] arrayColId) {
try {
String sql = "update colTable set colId=?, where qId=?";
PreparedStatement ps = con.preparedStatement(sql);
for(int i = 0; i < colId; i++) {
ps.setString(1, colId[i]);
ps.setString(2, qId);
ps.executeUpdate();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
//更新复选框记录
public void updateColl(字符串qId,字符串[]arrayColId){
试一试{
String sql=“update colTable set colId=?,其中qId=?”;
PreparedStatement ps=con.PreparedStatement(sql);
for(int i=0;i
如果我选择了3个复选框,这就是要更新的内容。
rowid|qID|cID--输出错误
:105:|:121:|:2:
:104:|:121:|:9:
:103:|:121:|:13:
//Update checkbox records
public void updateColl(String qId, String[] arrayColId) {
try {
String sql = "update colTable set colId=?, where qId=?";
PreparedStatement ps = con.preparedStatement(sql);
for(int i = 0; i < colId; i++) {
ps.setString(1, colId[i]);
ps.setString(2, qId);
ps.executeUpdate();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
:101:|:121:|:9:
:100:|:121:|:13:
//Update checkbox records
public void updateColl(String qId, String[] arrayColId) {
try {
String sql = "update colTable set colId=?, where qId=?";
PreparedStatement ps = con.preparedStatement(sql);
for(int i = 0; i < colId; i++) {
ps.setString(1, colId[i]);
ps.setString(2, qId);
ps.executeUpdate();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
这就是它应该看起来的样子。
rowid|qID|cID--正确输出
:103:|:121:|:2:
:101:|:121:|:9:
:100:|:121:|:13:
//Update checkbox records
public void updateColl(String qId, String[] arrayColId) {
try {
String sql = "update colTable set colId=?, where qId=?";
PreparedStatement ps = con.preparedStatement(sql);
for(int i = 0; i < colId; i++) {
ps.setString(1, colId[i]);
ps.setString(2, qId);
ps.executeUpdate();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
我已经做了一个星期了,有人能帮我吗
谢谢在您的情况下,您应该改用批处理:
PreparedStatement ps = con.preparedStatement("your query");
for(int i = 0; i < arrayColId.length; i++) {
ps.setString(1, qId);
ps.setString(2, arrayColId[i]);
ps.addBatch();
}
ps.executeBatch();
PreparedStatement ps=con.PreparedStatement(“您的查询”);
for(int i=0;i
你可以在这里学到更多
编辑
对于您的更新,您可以使用:
connection.setAutoCommit(false);
int arrayVals = Math.min(arrayColId.length, arrayQId.length);
for (int i = 0; i < arrayVals; i++) {
ps.setString(1, arrayColId[i]);
ps.setString(2, arrayQId[i]);
ps.addBatch(); //add a batch
}
ps.executeBatch();//execute your batch
connection.commit();//when you finish you should to commit your transaction
connection.setAutoCommit(false);
int arrayVals=Math.min(arrayColId.length,arrayQId.length);
对于(int i=0;i
在您的情况下,您应该改为使用批处理:
PreparedStatement ps = con.preparedStatement("your query");
for(int i = 0; i < arrayColId.length; i++) {
ps.setString(1, qId);
ps.setString(2, arrayColId[i]);
ps.addBatch();
}
ps.executeBatch();
PreparedStatement ps=con.PreparedStatement(“您的查询”);
for(int i=0;i
你可以在这里学到更多
编辑
对于您的更新,您可以使用:
connection.setAutoCommit(false);
int arrayVals = Math.min(arrayColId.length, arrayQId.length);
for (int i = 0; i < arrayVals; i++) {
ps.setString(1, arrayColId[i]);
ps.setString(2, arrayQId[i]);
ps.addBatch(); //add a batch
}
ps.executeBatch();//execute your batch
connection.commit();//when you finish you should to commit your transaction
connection.setAutoCommit(false);
int arrayVals=Math.min(arrayColId.length,arrayQId.length);
对于(int i=0;i
您需要检查arrayColID中的值。您需要检查arrayColID中的值。@Gee您可以使用带有插入或更新的批处理或任何操作Yes@Gee,使用这两种操作,您知道如何完成代码吗,或者我应该编辑我的答案吗?让我们一起检查。@Gee您是否在connection.setAutoCommit(false)之间设置了操作
和connection.commit()
@Gee您可以将批处理与插入、更新或任何操作一起使用Yes@Gee,与这两种操作一起使用,您知道如何完成代码吗,或者我应该编辑我的答案吗?让我们一起使用。@Gee您是否在连接之间设置了操作。setAutoCommit(false)
和connection.commit()代码>