2017-01-17 6 views
-1

私はMS Accessデータベースからデータを追加および操作できるC#で簡単なプログラムを作成しています。私のコードでは、既存のデータを更新するか、新しいフィールドを作成するためのボタンを追加しましたが、挿入ステートメントに何か問題があるとエラーが表示され続けます。INSERT文でエラーを取得する

これは私のコードです:

private void btnUpdate_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     String Code = textBox1.Text; 
     String Name = textBox2.Text; 
     String Address1 = textBox3.Text; 
     String Address2 = textBox4.Text; 
     String Address3 = textBox5.Text; 
     String balance = textBox6.Text; 
     String Sales = textBox7.Text; 
     String Cost = textBox8.Text; 

     if (Choice == 1) 
     { 
      sql = String.Format("UPDATE Debtors " + "SET names = '{0}'," + "address1 = {1}," + "Address2 = {2}," + "Address3 = {3}," + "Balance = '{4}' " + "Sales = '{5}' " + "Cost = '{6}' " + "WHERE accountCode = {7};", Name, Address1, Address2, Address3, balance,Sales,Cost, Code); 
     } 
     else 
     { 
      sql = String.Format("INSERT INTO Debtors(names, address1, address2, address3, Balance, salesYearToDate, costYearToDate) " + "VALUES " + "('{0}'," + "'{1}'," + "'{2}'," + "'{3}'," + "{4}," + "{5}," + "{6});", Name, Address1, Address2, Address3, balance, Sales, Cost); 
     } 

     Ey(sql); 
     DataLoad(); 
     BackTrack(); 
    } 
    catch (System.Exception exc) 
    { 
     MessageBox.Show(exc.Message); 
    } 
} 
+4

エラーメッセージには、正確には何が表示されますか?また、潜在的なSQLインジェクションを避けることを含む多くの理由で、文字列連結の代わりにSQLパラメータを使用するべきです。 – juharr

+0

更新のblance、Sales、およびCostの値は引用符で囲まれていますが、挿入されていないことに注意してください。 – juharr

+0

すべてを連結する必要はありません。引用符をすべて削除し、コードを少しきれいにするには '+'を使います。読みやすくします。 –

答えて

0

一部カンマが更新文のバランスと販売後に表示されません。

セミコロンも必要ありません。

また、あなたのステートメントをコミットする必要があります。

よろしくお願いいたします。

+0

また、accountCodeがinsertステートメントにありません – DoseR

関連する問題