2011-04-02 10 views
0

こんにちはみんなを追加する別のポストで助けた後、私は、しかし、私はWHEREを追加したい機能するように、次の更新SQL文を得ることができました。は、SQLのWHEREステートメント

だから私は持っている:

cmd = new SqlCommand("UPDATE Schedule SET Schd_Avaliable = '" + "No" + "'", con); 
     cmd.ExecuteNonQuery(); 

をそして私は、テーブルとそれを置くためにわからない、すべての句読点イムでしかしセッションからであるschdidにSchd_IDを探している場合は追加したいです。

これは私が作ったところである。

WHERE Schd_ID = schdid 

をちょうどよくわからないところがエラーをスローせずに、正確に以下の行でそれを置くために:

cmd = new SqlCommand("UPDATE Schedule SET Schd_Avaliable = '" + "No" + "'", con); 
      cmd.ExecuteNonQuery(); 

マーク

答えて

-1
cmd = new SqlCommand("UPDATE Schedule SET Schd_Avaliable = '" + "No" + "' WHERE Schd_ID ='" + schdid + "'", con); 
cmd.ExecuteNonQuery(); 
7

はこれを試してみてください。

string sql = "UPDATE Schedule SET Schd_Avaliable = 'No' WHERE Schd_ID = @schdid"; 
cmd = new SqlCommand(sql, con); 
cmd.Parameters.Add("@schdid", int.Parse(Session["SchdID"].ToString())); 
cmd.ExecuteNonQuery(); 

セッションおよびカラム名に必要に応じて変更します。

+1

私はパラメータに個人的に「いいえ」を設定します。私はそれを読むのが簡単であり、誰かがSQLインジェクションの問題を作成するのを止めることがASPの良い習慣であることは、トラックのダウンを招くことです。 –

+0

Hiya Yeh私は前にSQLインジェクションについて知らされていましたが、ユニはaspのイントロしか行っていませんでした。あなたは、あなたがベストプラクティスを教えるべきである「ユニでASPにイントロ」をやっている場合:: – Mark

+1

@マークは、私たちは卒業生のうち、このようなナンセンスを打つ必要はありません... – gbn

-1
"UPDATE Schedule SET Schd_Avaliable = '" + "No" + "'" + "WHERE Schd_ID = '" + schdid + '" 
+0

がどのような場合には、 'schid'が含まれている値は' 1 OR 1 = 1; DROP TABLEスケジュール。 SELECT * FROM SalaryEmployee'? –

+2

campbell:質問ではパラメータ化されたクエリについて質問しませんでした。 @GoGは質問された質問に答えた。しかし、その後のパラメータに関する情報を追加する方が良いでしょう。 –

+0

いいえ、質問しませんでした。プロセスの一部は良い習慣を学ぶことです。私はどちらもストアドprocsのいずれかを言及していない。不必要な可読性の問題と同じで、 'no'の不要な連結があります。はっきりするために、それはこの答えの私のdownvoteではない。 –

3

このような状況でSQLパラメータを使用することをお勧めします。

cmd = new SqlCommand(@"UPDATE Schedule 
          SET Schd_Avaliable = @ScheduleAvailable 
         WHERE Schd_ID = @ScheduleID", con); 
cmd.Parameters.Add(new SqlParameter("@ScheduleAvailable", "No")); 
cmd.Parameters.Add(new SqlParameter("@ScheduleID", schdid.ToString())); 
cmd.ExecuteNonQuery(); 
+0

+1。これは、ストアドプロシージャにリファクタリングするのに役立ちます! –

関連する問題