3

where句の文字列がありますが、文字列に引用符( ')が含まれています

例:

SELECT * FROM CsCustomer WHERE Name ='SA'MIR LUBIS' 

SQLサーバーからエラーが発生します。助言がありますか?

結果を表のセルに表示するために使用します

c = new TableCell();
c.Text = Db.SingleString("SELECT Unit FROM cscustomer WHERE Name='"+ r.Name +"'");
tr.Cells.Add(c);
4

7 に答える 7

9

パラメータ化されたクエリを使用する必要があります。クエリで一重引用符をエスケープできます'(別の一重引用符)

質問は C# でタグ付けされているため、連結を使用してクエリを作成している場合、このようなエラーが発生することは間違いありません。SqlParameter使用する と、次 のようになります。

SqlCommand cmd = new SqlCommand("SELECT * FROM CsCustomer WHERE Name =@pName");
cmd.Parameters.Add("@pName", "SA'MIR LUBIS"); //or any GUI control

これにより、SQL インジェクションからも保護されます

于 2013-03-22T10:09:18.993 に答える
2

SqlParameterクラスを見てください。このようにしてください:

var command = new SqlCommand("SELECT * FROM CsCustomer WHERE Name = @name");
command.Parameters.Add("@name", "SA'MIR LUBIS");
于 2013-03-22T10:11:23.987 に答える
2

それらがそこにあるはずがない場合は、それらを2倍にするか、削除する必要があります。

SELECT * FROM CsCustomer WHERE Name ='SA''MIR LUBIS' 
于 2013-03-22T10:09:25.910 に答える
1

次のように、単一引用符をエスケープするだけです。

SELECT * FROM CsCustomer WHERE Name ='SA''MIR LUBIS'
于 2013-03-22T10:13:07.023 に答える
1

テキスト内で二重引用符 ('') を使用する

SELECT * FROM CsCustomer WHERE Name ='SA''MIR LUBIS'

于 2013-03-22T10:08:59.750 に答える
1

代わりに 2 つの引用符を使用してください

SELECT * FROM CsCustomer WHERE Name ='SA''MIR LUBIS'

また、文字列連結の代わりにパラメーターを使用することをお勧めします

于 2013-03-22T10:10:01.240 に答える
0

次のように使用します。

"SELECT * FROM CsCustomer WHERE Name =\'SA\'MIR LUBIS\'"

または:

@"SELECT * FROM CsCustomer WHERE Name ='SA'MIR LUBIS'"
于 2013-03-22T10:09:22.790 に答える