2017-01-27 12 views
0

CNIC番号に基づいてデータベースからレコードを削除しようとしました。レコードは正常に削除されています。しかし、どちらもdoneに変更されておらず、Messageは "Account has been deleted"と表示されていません。表示されているメッセージは、「CNICを再確認してください」です。C# - このCoeは、「アカウントが削除されました」と表示されず、「CNICを再確認してください」と表示しています。

答えて

1

deleteクエリを実行するこのシナリオでは、ExecuteReader()の具体的な理由はありません。削除のための連結クエリの使用は非常に危険です。上記のクエリを実行するにはここでパラメータ化を使用することをお勧めします。

string strQuery = "Delete from [AirlineTicketReservation].[dbo].[Traveller_Info] Where CNIC = @CNIC";  
using(SqlCommand cmd = new SqlCommand(strQuery, conn)) 
{ 
    cmd.Parameters.Add("@CNIC", SqlDbType.Varchar).Value = mtxtCNIC.Text; 
    int rowsAffected = cmd.ExecuteNonQuery(); 
    if(rowsAffected > 0) 
    { 
     MessageBox.Show("Account has been deleted."); 
    } 
    else 
    { 
     MessageBox.Show("Please Recheck the CNIC, it is not existing", "Failed"); 
    } 
} 

更新:

私は行数を返すなる、我々は実行するためにここにExecuteNonQuery()を使用している計測自動制御学会、削除する前に存在を確認する必要はないと思うのコードは次のようになります影響を受けた。削除された行がない場合は、メッセージを表示できることに基づいて戻り値が0になることを意味します。

+0

しかし、入力されたCNICがデータベースに存在するかどうかを評価する必要があります。どのように私はあなたの方法でそれを評価することができます。 –

+1

ExecuteNonQueryは、有効な行数を返します。 1の場合は存在することを検証できます。 0の場合、CNICは存在しません。 – Vijay

1

selectとdeleteの2つのクエリを使用します。 このような問題については、チュートリアルを参照する必要があります。

+0

本当に高価な '= '" + mtxtCNIC.Text + "'" ' –

関連する問題