我正在尝试将所有选中的复选框值插入 mysql 数据库中的每一行, 一旦选中复选框,该值将通过连续插入行插入到数据库中 这是我的代码,但我不确定是否插入了 arraylist 循环
List<String> boxes = new ArrayList<>();
private class Insert extends AsyncTask<String, String, String>
{
TextView mssg = (TextView) findViewById(R.id.message);
String cb = String.valueOf(app);
CheckBox cbapp = (CheckBox) findViewById(R.id.cb_approver);
String msg = "";
@Override
protected void onPreExecute() {
}
protected String doInBackground(String... strings) {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection(urls, user, pass);
if (conn == null) {
msg = "Connection went wrong";
} else if(conn!=null) {
String query = "INSERT INTO module_pivot (userID,modID,deptID,formsID) VALUES (99,1,?,0)";
PreparedStatement prep = conn.prepareStatement(query);
for (int i=0;i<boxes.size();i++) {
prep.setString((i), boxes.get(i));
}
prep.executeUpdate();
msg = "Inserted!";
}
} catch (Exception e) {
msg = "Sql query error";
e.printStackTrace();
}
return msg;
}
@Override
protected void onPostExecute(String msg) {
mssg.setText(msg);
}
}
这里是复选框arraylist的值,部门列表
public void onCheck(View view){
boolean checked = ((CheckBox)view).isChecked();
switch (view.getId()){
case R.id.cbObra:
if (checked)
boxes.add("15");
else
boxes.remove("15");
break;
case R.id.cbBus:
if (checked)
boxes.add("14");
else
boxes.remove("14");
break;
case R.id.cbHR:
if (checked)
boxes.add("11");
else
boxes.remove("11");
break;
case R.id.cbIT:
if (checked)
boxes.add("4");
else
boxes.remove("4");
break;
case R.id.cbMan:
if (checked)
boxes.add("7");
else
boxes.remove("7");
break;
case R.id.cbFin:
if (checked)
boxes.add("10");
else
boxes.remove("10");
break;
case R.id.cbPM:
if (checked)
boxes.add("12");
else
boxes.remove("12");
break;
case R.id.cbCC:
if (checked)
boxes.add("84");
else
boxes.remove("84");
break;
}
}
最佳答案
您的代码有一个明显的问题:
for (int i=0;i<boxes.size();i++) {
prep.setString((i), boxes.get(i));
}
prep.executeUpdate();
这样,您将在执行更新之前关闭循环。此外,您应该在事务中运行更新过程。我认为你应该这样做:
conn.setAutoCommit(false);
for (int i=0;i<boxes.size();i++) {
prep.setString((i), boxes.get(i));
prep.executeUpdate();
}
conn.commit();
其中 conn 是您的 JDBC 连接。
关于java - 将复选框值的数组列表插入 mysql 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60161365/