我是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 + "'";
答案 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注入攻击,但如果唯一的客户端是您自己的代码(即您知道列的新值是“安全的”),那就没关系。