2016-06-16 16 views
-3

データベースから一部のデータを更新しようとしていますが、コードに問題があります...エラーは表示されませんが、更新されません。データベースからデータを更新する

conexiune cheltuieli私コネクタクラスでデータベースと名前の残りの部分で私のテーブルに列

ですされたエラーは、この行にある:command.ExecuteNonQuery();とエラー私はボタンを エラークリックすると表示されます。を型「MySql.Data.MySqlClient.MySqlException」の最初のチャンス例外がMySql.Data.dll

で発生しました追加情報:あなたはあなたの中にエラーが発生していますSQL構文。あなたのMariaDBサーバーのバージョンに対応するマニュアルをチェックしてください。 "35"、DistractieCultura '20'、Neprevazute '30' 1行目を使用してください。

私は何の考えもありません。

private void button5_Click(object sender, EventArgs e) 
     { 
      try 
      { 
       if (textBox1.Text != "" & textBox2.Text != "" & textBox3.Text != "" & textBox4.Text != "" & textBox5.Text != "" & textBox6.Text != "") 
       { 
        MySqlConnection conexiune = null; 
        conexiune = Conector.getConnection(); 
        MySqlCommand command = new MySqlCommand(); 
        command.Connection = conexiune; 
        command.CommandText = "Update cheltuieli set Mancare = '" + textBox1.Text + "', Facturi = '" + textBox2.Text + "', Reparatii = '" + textBox3.Text + "', Altele '" + textBox4.Text + "', DistractieCultura '" + textBox5.Text + "', Neprevazute '" + textBox6.Text + "'"; 
        command.ExecuteNonQuery(); 

        MessageBox.Show("Actualizat!"); 
        textBox1.Clear(); 
        textBox2.Clear(); 
        textBox3.Clear(); 
        textBox4.Clear(); 
        textBox5.Clear(); 
        textBox6.Clear(); 
        Search(); 

       } 
      } 
      catch (Exception ex) 
      { 

      } 
     } 
+0

クエリを文字列に置き、[印刷]または[ログ]を使用して、クエリが整形式であるかどうかを確認します。また、可能であれば、パラメータを置き換えた後にそのサンプルクエリを提供します。 –

+2

[Stackoverflowについて約12,700の質問](https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=site:stackoverflow.com+.net+sql+%22incorrect+syntax +%22の近く)。答えはほぼ同じです - SQLパラメータを使用してください。 – Plutonix

答えて

3

更新するすべてのフィールドの後には、記号=と値を続けます。あなたのクエリが最初のフィールドだけ後のシンボルを持ってい

UPDATE table SET Field1='Value1', Field2='Value2' ..... 

あなたはすぐにこのコードを捨てるとパラメータ化クエリを使用して起動する必要があり、と述べました。文字列の連結では、あなたが今やっているように、あなたのコードは、SQLインジェクションを使用してハッキングすることができます。また、自分の価値観

パラメータ化クエリの例を単一引用符によって引き起こされる構文エラーに直面する可能性

string cmdText = @"Update cheltuieli set Mancare = @mancare, 
        Facturi = @facturi,Reparatii = @reparatii, [email protected], 
        DistractieCultura = @distractieCultura, 
        [email protected]"; 

using(MySqlConnection conexiune = Conector.getConnection()) 
using(MySqlCommand command = new MySqlCommand(cmdText, conexiune)) 
{ 
    conexiune.Open(); 
    command.Parameters.Add("@mancare", MySqlDbType.VarChar).Value = textBox1.Text; 
    command.Parameters.Add("@facturi", MySqlDbType.VarChar).Value = textBox2.Text; 
    ... and so on for the other parameters .... 
    command.ExecuteNonQuery(); 
} 

お知らせです照会にWHEREステートメントがないため、この照会はテーブルcheltuieliに存在するすべてのレコードを同じ値で更新します。これは常にエラーですが、更新するレコードの手がかりはありません。

+0

私はあなたのコードを試しましたが、エラーは正確に同じ行に残っています** command.ExecuteNonQuery(); **このプログラムはexpencesを追加、削除、更新、表示できますし、addメソッドではそのcommand.executenonqueryそれが働いた今、私はそれを完全にエラー私を使用するたびに。値は単なる数値であり、データベースのデータがカテゴリ –

+0

にリストボックスから更新されています**追加情報:キー 'PRIMARY'の重複エントリ '5' ** –

+0

私は初心者です学校のことと私はこのエラーに苦しんでいます...更新方法と削除方法... –

関連する問題