gpt4 book ai didi

java - 将复选框值的数组列表插入 mysql 行

转载 作者:行者123 更新时间:2023-12-01 18:31:26 24 4
gpt4 key购买 nike

我正在尝试将所有选中的复选框值插入 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/

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