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();

ただし、","文字列の最後に a が表示されます。使ってみた

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

余剰を削除します","が、これにより も削除され")"ます。

最後のコンマだけを削除するにはどうすればよいですか?

実際の結果:INSERT INTO .... VALUES('1','2','3',)

望ましい結果:INSERT INTO .... VALUES('1','2','3')

4

6 に答える 6

17

「Remove」メソッドを使用して、ある位置の特定の文字を削除できます。

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)列がない場合でもクエリは他の理由で失敗するため、このチェックは少し行き過ぎですが、これを で文字列を結合する方法のテンプレートと考えると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-injection を防ぐために sql-parameters を使用することを強くお勧めします。そのため、SQL 文字列に値を含めないでください。

于 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 に答える