2017-12-16 12 views
1

私のシステムを通じてMS Accessデータベースからデータを削除します。データグリッドビューからデータを削除

幸いにも実行中ですが、削除ボタンをクリックすると、一度に1つのデータを削除するのではなく、すべてのデータが1回のクリックで削除されました。

ここでエラーが発生する可能性がありますか?

private void bttnDelete_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     connection.Open(); 
     OleDbCommand command = new OleDbCommand(); 
     command.Connection = connection; 
     string query = "delete from tblBookMaint where BookNumber"; 
     command.CommandText = query; 

     command.ExecuteNonQuery(); 
     MessageBox.Show("Data Deleted!"); 
     connection.Close(); 
     load(); 
     clearTxts(); 
     Panel.Enabled = false; 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show("Error " + ex); 
    } 
} 
+1

「delete from tblBookMaint where BookNumber'? where節に渡される値はありません。適切なクエリを作成する必要があります。 –

答えて

2

あなたのwhere句で任意の条件を渡していない、行のインデックスを取得します

string query = "delete from tblBookMaint where BookNumber= "+index+" "; 
0
private void bttnDelete_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     connection.Open(); 
     OleDbCommand command = new OleDbCommand(); 
     command.Connection = connection; 
     int index = Convert.ToInt32(e.RowIndex); 
     string query = "delete from tblBookMaint where BookNumber= "+index+" "; 
     command.CommandText = query; 

     command.ExecuteNonQuery(); 
     MessageBox.Show("Data Deleted!"); 
     connection.Close(); 
     load(); 
     clearTxts(); 
     Panel.Enabled = false; 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show("Error " + ex); 
    } 
} 

以下のようにクエリでのインデックスを渡すと、その特定を削除するには、クエリに渡します行

0

ボタンのクリックイベントでは、使用するSQLクエリで削除するレコードを指定していません。したがって、クエリはテーブル内のすべてのデータを削除します。プライマリキーまたはテーブル内のレコードを一意に識別できるカラムがある場合は、テーブル内の特定のレコードを削除すると具体的に言うことができます。あなたのケースでは、クエリで未処理のインデックスを指定する必要があります。次を使用してみてください。:

private void bttnDelete_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     connection.Open(); 
     OleDbCommand command = new OleDbCommand(); 
     command.Connection = connection; 
     int index = Convert.ToInt32(e.RowIndex); 
     string query = "delete from tblBookMaint where BookNumber= "+index+" "; 
     command.CommandText = query; 

     command.ExecuteNonQuery(); 
     MessageBox.Show("Data Deleted!"); 
     connection.Close(); 
     load(); 
     clearTxts(); 
     Panel.Enabled = false; 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show("Error " + ex); 
    } 
} 
関連する問題