2015-04-21 89 views
-4

我有「(在UPDATE語句的語法錯誤)」當我用C#更新中訪問數據庫中的記錄語法錯誤在UPDATE

string constring = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=E:\C#\شغل\Host-CO\Host-CO\bin\Debug\hostco.accdb"; 
     string Query = "update host set رقم المريضه='" + رقم_المريضهTextBox.Text + "',المبلغ المسترد='" + المبلغ_المستردTextBox.Text + "',المبلغ='" + المبلغTextBox.Text + "',التاريخ='" + التاريخDateTimePicker.Value.ToShortDateString() + "'where الأسم='" + textBox1.Text + "';"; 
     OleDbConnection con = new OleDbConnection(constring); 
     OleDbCommand cmd = new OleDbCommand(Query, con); 
     try 
     { 
      con.Open(); 
      cmd.ExecuteNonQuery(); 
      MessageBox.Show("Data Updated"); 
      con.Close(); 
     } 
+4

你真的認爲我們能讀嗎? – atlanteh

+1

這樣打印出查詢字符串的值並檢查它。 – OldProgrammer

+0

這是否很好閱讀? –

回答

0

它很難說得清究竟誤差,尤其是那些非-ASCII字符。正如OldProgrammer所說,調試的一種可能性是在變量的初始化之下放置一個斷點,並檢查連接的結果 - 這個結果可以在你的數據庫環境中測試,也許你會得到更精確的錯誤信息。

但正如Marc Gravell所說,參數一切都會好得多。你的語句可以按如下方式寫入(因爲我有一些困難,在我的環境與編輯方向,不同的流量文字我不使用您的確切查詢):

string Query = "update host set [field1] = ?, [field2] = ?"; 

OleDbConnection con = new OleDbConnection(constring); 
OleDbCommand cmd = new OleDbCommand(Query, con); 

cmd.Parameters.Add("field1", OleDbType.VarWChar).Value = field1TextBox.Text; 
cmd.Parameters.Add("field2", OleDbType.VarWChar).Value = field2TextBox.Text; 

try { 
    con.Open(); 
    cmd.ExecuteNonQuery(); 
    MessageBox.Show("Data Updated"); 
    con.Close(); 
} 

我補充說:「[...]」,圍繞字段名稱,因爲字段名稱中的非ACSII字符可能會在沒有轉義的情況下造成麻煩。欲瞭解更多詳細信息,請參閱: