0

コードスニペット:

dbCommand = new SqlCommand("sp_EVENT_UPATE '" 
    + currentEvent.EventID + "','" + currentEvent.Description + "','" 
    + currentEvent.DisciplineID + "'", dbConnection);

どこに見積もりがありませんか?

4

3 に答える 3

2

閉じていない引用符は、おそらく変数の 1 つにあります。さらに、そのようなクエリを作成すると、SQL インジェクション攻撃に対して脆弱になります。

SqlCommand.Parameters リストを使用して値を追加することを検討してください。

このようなもの

dbCommand = new SqlCommand("sp_EVENT_UPATE @eventId, @description, @disciplineID", dbConnection);

dbCommand.Parameters.AddWithValue("@peventId",currentEvent.EventID);
dbCommand.Parameters.AddWithValue("@description",currentEvent.Description);
dbCommand.Parameters.AddWithValue("@disciplineID",currentEvent.DisciplineID);
于 2012-10-13T06:43:07.777 に答える
2

parameters文字列の代わりに使用しhardcodedます。

using(dbCommand = new SqlCommand())
{
  dbCommand.CommandText="sp_EVENT_UPATE";
  dbCommand.Connection=dbConnection;
  dbCommand.CommandType=CommandType.StoredProcedure;
  dbCommand.Parameters.AddWithValue("@EventID",currentEvent.EventID);
  ....
  dbConnection.Open();
  dbCommand.ExecuteNonQuery();
  dbConnection.Close();
 }
于 2012-10-13T06:46:22.000 に答える
0

currentEvent.Description には、その SQL ステートメントの構文を壊している一重引用符が含まれている可能性があります。この種のシナリオに対抗するには、常に準備済みのステートメント/コマンドを使用する必要があります。

于 2012-10-13T06:43:18.657 に答える