2013-08-20 12 views
6

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')

+5

でforループの内側

 Q.Append(","); 

を交換してくださいそれはあなたの質問に答えていないですが、私は本当にむしろ文字列を連結することによって、それらを生成するよりも、パラメータ化クエリを使用することをお勧めします。これを行う方法については、SOに1トンの記事があります。 –

+0

カンマを最初に削除したいのであれば、なぜあなたが '' Q.Append( ")"); ''を追加するのですか? –

+2

ソリューションはコンマを削除するのではなく、これを別の方法で行うことです。 –

答えて

2

この:何の列が存在しない場合、クエリは、まだ他の理由のために失敗するので、私たちが考える場合

Q.Append(")"); 

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

Q.Append(")"); 

でチェックif (col_no > 0)を置き換えるには、少し船外にありますこれはStringBuilderの文字列を結合する方法に関するテンプレートです。チェックはの右ということです。

ああ...このようにクエリを作成すると、が間違っているのことです。

0
  1. あなたの目標を達成するための正しい方法は、パラメータ化クエリを使用することです。

  • はこれをすることができ、あなたの質問にブラケット
  • 純粋な答えを入れる前に、最後のコマを削除する可能性があります。

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

    またはこの:

    string query = ext.Remove(ext.LastIndexOf(","), 1); 
    
  • 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の入力を使用することをお勧めします。したがって、sql-stringに値を含めないでください。

    13

    あなたが位置の特定の文字を削除するには、「削除」メソッドを使用することができます。

    query = query.Remove(query.LastIndexOf(","), 1); 
    
    0

    はこれを試してみてください。単純な論理

    あなたのコードでは条件beforアペンドコンマラインで

        **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(","); 
            }** 
    
            } 
    
    0

      if (i != col_no - 1) 
          { 
           Q.Append(","); 
          } 
    
    関連する問題