2016-03-29 11 views
-1

こんにちは私のプログラムのウィンドウ警告に関する問題があります。 'データベースにレコードが見つかりません'と表示されますが、正常に行が削除されます。ここに手を求める。ありがとう!C#を使用してSQLデータベースから削除する

try 
      { 
       con.Open(); 
       string Sql = "DELETE FROM contacts WHERE LastName LIKE '" + txtbx_delete.Text + "'"; 

       MySqlDataAdapter da = new MySqlDataAdapter(Sql, con); 
       DataSet ds = new DataSet(); 
       da.Fill(ds); 


       if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0) 
       { 
        ClientScript.RegisterClientScriptBlock(this.GetType(), "alert", "alert('Delete successful! Check display!')", true); 
       } 
       else 
       { 
        ClientScript.RegisterClientScriptBlock(this.GetType(), "alert", "alert('No record with that last name found!')", true); 
       } 
      } 
+2

うん。一般的な感想:どのようにデータセットにデータをロードするDELETEステートメントですか?ただ尋ねる。私の世界(grante、MySQLを使用しない)では、DELETEは出力を生成しないからです。 – TomTom

答えて

2

これは、テーブルをフェッチしないためです。単に削除クエリを実行しているだけです。

4

アダプタの代わりにExecuteNonQuery()を使用する必要があります。これは、メッセージをスローできることに基づいて、影響を受ける行数を示します。そして恐らくparameterized queriesは注射を避けるためのより良い選択肢です(あなたが削除を扱っているので、よりインポテンツです)。

string Sql = "DELETE FROM contacts WHERE LastName LIKE @delete"; 
    using(MySqlCommand cmd = new MySqlCommand(readCommand)) 
    { 
    cmd.Parameters.Add(new MySqlParameter("@delete", txtbx_delete.Text)); 
    int result= m.ExecuteNonQuery(); 
    //result holds number of rows affected 
    if (result>0) 
    { 
     ClientScript.RegisterClientScriptBlock(this.GetType(), "alert", "alert('Delete successful! Check display!')", true); 
    } 
    else 
    { 
     ClientScript.RegisterClientScriptBlock(this.GetType(), "alert", "alert('No record with that last name found!')", true); 
    } 
    } 

オブジェクトを正しく配置するには、常にusingステートメントを使用してください。 接続のために試すこともできます。使用した後すぐに接続を切断します。

+0

どこにコードを貼るべきですか?私はこの言語でちょっと新しいです。追いつくために最高の努力をしています。 –

+0

'int result = m.ExecuteNonQuery();'にする必要があります。 @AlphiCanozaあなたの 'if'文を' if(result> 0) 'に置き換えます。 – Brad

+0

@ブラッド:絶対に;私はその答えを更新した –

関連する問題