7

我正在用 StringBuilder 构建一个字符串。

StringBuilder Q = new StringBuilder();
Q.Append("INSERT INTO ");
Q.Append(_lstview_item);
Q.Append(" VALUES");
Q.Append("("); 
for (i = 0; i < col_no; i++)
{
    Q.Append("'");
    Q.Append(col_value[i]);
    Q.Append("'");
    Q.Append(",");
} 
Q.Append(")");
string query = Q.ToString();

但是,我","在字符串的末尾得到了一个。我尝试使用

string query = ext.Substring(0, ext.LastIndexOf(",") + 1);

去掉多余的",",但这也去掉了")"

如何仅删除最后一个逗号?

实际结果INSERT INTO .... VALUES('1','2','3',)

期望的结果INSERT INTO .... VALUES('1','2','3')

4

6 回答 6

17

您可以使用“删除”方法在某个位置删除特定字符:

query = query.Remove(query.LastIndexOf(","), 1);
于 2013-08-20T07:57:48.163 回答
2

这个:

Q.Append(")");

用。。。来代替

if (col_no > 0)
{
    Q.Length--;
}

Q.Append(")");

检查if (col_no > 0)有点过分,因为如果没有列,查询仍然会因其他原因而失败,但如果我们认为这是一个关于如何在 a 中组合字符串的模板StringBuilder,那么检查是正确的做法。

啊...以这种方式构建查询是错误的。

于 2013-08-20T07:53:53.243 回答
1

我建议在添加最后一个之前先删除逗号),所以:

for (i = 0; i < col_no; i++)
{
    Q.Append("'");
    Q.Append(col_value[i]);
    Q.Append("'");
    Q.Append(",");

} 
if(col_no > 0) Q.Length --; // <-- this removes the last character
Q.Append(")");
string query = Q.ToString();

但是,如果你真的想创建一个 sql-query 我强烈建议使用 sql-parameters 来防止 sql-injection。所以不要在你的 sql-string 中包含这些值。

于 2013-08-20T07:53:47.563 回答
0
  1. 实现目标的正确方法是使用参数化查询。
  2. 有可能在放置括号之前删除最后一个逗号
  3. 您的问题的纯粹答案可能是这样的:

.

string query = ext.Substring(0, ext.LastIndexOf(",")) + ext.Substring(ext.LastIndexOf(",") + 1);

或这个:

string query = ext.Remove(ext.LastIndexOf(","), 1);
于 2013-08-20T07:53:18.627 回答
0

尝试这个。简单的逻辑

在附加逗号行之前检查以下 if 条件

                  **if(i!=(col_no-1))
                    {
                    Q.Append(",");
                    }*

用你的代码。

                 for (i = 0; i < col_no; i++)
                  {
                    Q.Append("'");
                    Q.Append(col_value[i]);
                    Q.Append("'");
                    **if(i!=(col_no-1))
                    {
                    Q.Append(",");
                    }**

                  } 
于 2013-08-20T08:12:03.807 回答
0

代替

            Q.Append(","); 

在for循环内

            if (i != col_no - 1)
            {
                Q.Append(",");
            }
于 2013-08-20T09:33:39.133 回答