使用每个编号。从一个没有的字符串作为唯一的行值来编辑数据库中的另一列,我是否必须先将字符串转换为数组?

To use each no. from a string of no's as a unique row value to edit another column in database, do I have to convert string into array first?

我需要将字符串中的多个数字分解成单独的值,这样我就可以通过使用 jdbc 迭代和更新数据库中的列来将这些值添加为行值。我需要使用 string.split() 还是有另一种方法可以在不转换为数组的情况下进行迭代?

首先尝试直接迭代字符串,感觉不对。我该如何进行?下面是程序的一部分:(该字符串是从另一个 servlet 调用的。它类似于 (101 201 301 ....)(每行的值)。因此,根据这些动态接收的值,我需要分别在另一个中更新是或否(状态)的列。

PreparedStatement ps=conn.prepareStatement("Update table_name SET column_name = "+status+ " WHERE column_name2 = (?)");
    for(int i=0;i<string.length();i++){
        ps.setString(1, string);

如果您想对字符串中的每个数字执行语句。

您可以将其拆分为一个数组并遍历该数组以执行您的语句。 而且在可读性方面,我更喜欢这样使用for循环 https://docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html

//Assuming string="101 102 103"
String[] arrayString = string.split(" ");

//Here arrayString:
//arrayString[0]= "101"
//arrayString[1]= "102"
//arrayString[2]= "103"

for (String item : arrayString) {
        ps.setString(1, item);
        ps.executeUpdate()          
}

也许还有其他方法可以做到。但我不确定,我不够精确。

所以我使用了 For-each 循环,输出终于正确了。基本上,我们可以直接将所有值以用','分隔的字符串的形式相加。可以在占位符的帮助下添加所需的值。

for(String s:boxOption){
        dbSt=dbSt+","+s;
    }
    dbSt=dbSt.substring(5); //to remove the null value.
    System.out.println("string of values selected:"+dbSt);

    ps=conn.prepareStatement("UPDATE table_name SET  column_name =? WHERE column_name2 IN ("+dbSt+")");
    ps.setString(1, status); //status is different for different parameters calling the same method.
    int count=ps.executeUpdate();