2016-11-03 4 views
1

ユーザーがボタン(保存ボタン)をクリックするたびに特定のAperture(Bussiness)のすべての行を削除しようとしています保存する。コードは以下の通りです:どこからでも削除クエリーしないクエリー - SQLite C#

private void button2_Click(object sender, EventArgs e) 
    { 
     SQLiteCommand cmdDel = new SQLiteCommand(); 
     cmdDel = SQLconnect.CreateCommand(); 
     cmdDel.CommandText = "DELETE FROM GridTable WHERE [email protected]"; 
     cmdDel.Parameters.AddWithValue("@combo", combo1.Text); 
     cmdDel.ExecuteNonQuery(); 

     DataTable dt = (DataTable)grid1.DataSource; 

     string sql = "INSERT INTO GridTable (Aperturas, Ventas, Proveedores, EAE, EAM) VALUES (@aperturas,@ventas,@proveedores,@eae,@eam)"; 

     foreach (DataRow r in dt.Rows) 
     { 
      SQLiteCommand cmd = new SQLiteCommand(); 
      cmd = SQLconnect.CreateCommand(); 
      cmd.CommandText = sql; 
      cmd.Parameters.AddWithValue("@aperturas", combo1.Text); 
      cmd.Parameters.AddWithValue("@ventas", r["Ventas"]); 
      cmd.Parameters.AddWithValue("@proveedores", r["Proveedores"]); 
      cmd.Parameters.AddWithValue("@eae", r["Egreso Axel Efectivo"]); 
      cmd.Parameters.AddWithValue("@eam", r["Egreso Axel Mercaderia"]); 
      cmd.ExecuteNonQuery(); 
     }   
    } 

問題は、私は戻ってデータをロードするとき、それが二度目に挿入されたかのようにそれがあった(重複表示され、削除機能は何もしていないようだということですしかし、そのように表示されることはありません)

ありがとうございます。

+1

cmdDel = SQLCONNECTへの接続を開く見ることができませんでした.CreateCommand();この行は何をしているのでしょうか? – mybirthname

+0

'WHERE Aperturas = @ combo'という値を削除しようとしています。 'combo1.Text'はあなたが削除したいすべてのものに対して正しい値を持っていますか? –

+0

実際に何が行われているのか分かりませんが、GridTableからDELETEを実行するとテーブル全体が削除されるので問題はありません@mybirthname –

答えて

-3

だけの提案ではなく、

cmdDel.Parameters.AddWithValue("@combo", combo1.Text);

を使用してのあなただけの連結方式の文字列

string.format("DELETE FROM GridTable WHERE Aperturas = '{0}'", combo1.Text) 

はまた、私はあなたがデータベース

+0

私はその前に接続を開いていましたが、concatとparameteriseの両方を試しましたが、どちらもうまく動作しませんでした。 –

+1

combo1に ''OR' '=''を入力してみてください。 –

+0

あなたの解決策は、SQLインジェクションの問題と潜在的なフォーマットエラーを引き起こします。 @ JoaquinGuevaraはパラメータを使用することで正しく実行しました。 – LarsTech

関連する問題