C# で記述されたこの Oracle SQL クエリで、次のエラーが表示されます:無効な文字
qur = " select * from emp where name LIKE '%" + TextBox1.Text + "%'";
どうすればこれを解決できますか?
問題は、クエリが SQL インジェクション攻撃に対して非常にオープンであることです。パラメータ化されたクエリを使用していないため、TextBox1 に入力されたものはクエリを破壊する可能性があります。
たとえば、テキストボックスに : ' char と入力すると、クエリが実行され、select * from emp where name LIKE '%'%'
エラーがスローされます。それとは別に、これは脆弱性であり、そのようなクエリは使用しないでください。
クエリを次のように変更できます。
SqlCommand cmd= new SqlCommand( " select * from emp where name LIKE @myParam");
cmd.Parameters.AddWithValue("@myParam", "%" + TextBox1.Text + "%");
あなたが逃しました@
以下のように使用する必要があります。
qur = " select * from emp where name LIKE '%'" + TextBox1.Text + "'%'";