摆脱逗号

时间:2013-12-13 18:59:00

标签: java sql regex sqlite comma

我是java的新手,需要帮助摆脱SQL查询中的逗号。谁可以指导我朝正确的方向发展?

    query = "UPDATE " + tablename + " SET ";
    for(int i=0; i< columnnames.size(); i++)
    {
    query+= "'" + columnnames.get(i)  + "' = '" + row[i] + "',";
     }
     query = StripLastComma(query); //Not sure how to do this in Java.
    query +="' WHERE " + FirstColumn + " = '" + rowstandard + "'";

3 个答案:

答案 0 :(得分:2)

你可以这样做:

query = query.substring(0, query.length()-1);

位于“//不确定如何在Java中执行此操作。”。

但也:

1)正如Makoto写的那样使用PreparedStatement。还读了一下 关于SQL注入以及如何保护自己。

2)使用StringBuilder而不是String对你的情况会更好 那是因为,似乎你使用String并且它是不可变的 所以当删除最后一个逗号时,你实际上是在创建一个 全新的String对象,实际上不需要像其他指针那样 在他们的评论中

答案 1 :(得分:0)

忽略已经提到的SQL注入问题,我会使用StringBuilder并像这样做以避免最后一个逗号。

StringBuilder queryBuilder = new StringBuilder();
queryBuilder.append("UPDATE " + tablename + " SET ");
for(int i = 0; i < columnnames.size(); i++) {
  if (i != 0) {
    queryBuilder.append(",");
   }

  queryBuilder.append("'" + columnnames.get(i)  + "' = '" + row[i] + "'");
}

queryBuilder.append("' WHERE " + FirstColumn + " = '" + rowstandard + "'");
query = queryBuilder.toString();

答案 2 :(得分:0)

首先,你有一个错误:当你不应该引用你的列名时。

通过使第一次迭代的逻辑不同并将逗号放在内容之前,可以最简单地处理逗号问题,这样可以巧妙地处理仅存在的边缘情况一栏:

if (i > 0)
    query += ",";
query += columnnames.get(i) + " = '" + row[i] + "'";

您的代码容易受到SQL注入攻击,但如果唯一的客户端是您自己的代码(即您知道列的新值是“安全的”),那就没关系。