c#
  • sql
  • ms-access
  • ado.net
  • 2012-08-01 163 views 0 likes 
    0

    此SQL UPDATE語句有什麼問題?SQL Update語句錯誤

    try 
    { 
        int ageValue = Int32.Parse(age.Text); 
    
        string updateQuery = "Update \nMyTable \nSet \nFName = '" + fname.Text.ToString() + "',\nLName = '" + lname.Text.ToString() + "',\nAge = " + ageValue + ",\nCome = '" + from.Text.ToString() + "',\nTo = '" + to.Text.ToString() + "' Where Age=" + ageValue + ";"; 
    
        MessageBox.Show(updateQuery); 
    
        OleDbConnection con = new OleDbConnection("provider=Microsoft.JET.OLEDB.4.0; Data Source = Database5.mdb"); 
    
        OleDbCommand com = new OleDbCommand(updateQuery, con); 
    
        con.Open(); 
        com.ExecuteNonQuery(); 
        con.Close(); 
    } 
    catch (FormatException ex) 
    { 
        MessageBox.Show(ex.Message); 
    } 
    catch (OleDbException ex) 
    { 
        MessageBox.Show(ex.Message); 
    } 
    

    我收到錯誤

    在Update語句

    語法錯誤

    什麼是錯在SQL更新?

    工具:

    • 的Microsoft Access 2003
    • 微軟Visual Studio 2010的C#

    請幫忙在此先感謝

    +6

    請發佈生成的SQL。同樣認真考慮放棄這種技術並改用參數化的命令對象。 – Simon 2012-08-01 09:44:12

    +0

    你的SQL似乎是正確的,但我們無法查看錶格MyTable結構。你可以發佈嗎? – jelies 2012-08-01 09:46:40

    +1

    爲什麼你在querry中使用\ n? – SMK 2012-08-01 09:47:53

    回答

    0

    我建議你把SQL事件探查器上,並跟蹤您的更新查詢,因爲它易於閱讀連接的查詢字符串

    2

    嘗試擺脫\ n垃圾。

    string updateQuery = "Update MyTable Set FName = '" + fname.Text.ToString() + "',LName = '" + lname.Text.ToString() + "',Age = " + ageValue + ",Come = '" + from.Text.ToString() + "',To = '" + to.Text.ToString() + "' Where Age=" + ageValue; 
    

    輸出concatination的結果,並嘗試運行它。如果這不起作用,請在此處發佈連接結果,並且有人應該能夠提供幫助。不知道連接的結果,很難知道什麼是錯的。

    +0

    嘿我用\ n只爲UpdateQuery的可讀性,當我把它發送到MessageBox – 2012-08-01 10:39:13

    +0

    我不確定如果Access可以處理換行 - 但後綴分號不需要,可以成爲你的問題。如果沒有看到最終產生的結果,就很難知道真正發生了什麼。 – 2012-08-01 10:45:16

    2

    嘗試改變這樣的查詢(除去\n S和最終;

    string updateQuery = "Update MyTable Set FName = '" + fname.Text.ToString() + 
        "', LName = '" + lname.Text.ToString() + "', Age = " + ageValue + 
        ", Come = '" + from.Text.ToString() + "', To = '" + to.Text.ToString() + 
        "' Where Age=" + ageValue; 
    
    +1

    如果您必須將SQL拼湊在一個字符串中,那麼我會推薦使用String.Format()。 – davenewza 2012-08-01 09:49:47

    +0

    這是正確的,但我會專注於首先修復SQL查詢。 – Alex 2012-08-01 09:59:11

    0

    你好,你可以用這個代碼

    StringBuilder stringBuilder = new StringBuilder() ; 
    stringBuilder.Append("Update MyTable Set FName = ") ; 
    stringBuilder.Append(fname.Text.ToString()) ; 
    stringBuilder.Append(",\nLName = ") ; 
    stringBuilder.Append(lname.Text.ToString()) ; 
    stringBuilder.Append(",\nAge = ") ; 
    stringBuilder.Append(ageValue) ; 
    
    stringBuilder.Append(",\nCome = ") ; 
    stringBuilder.Append(from.Text.ToString()) ; 
    stringBuilder.Append(",\nTo = ") ; 
    stringBuilder.Append(to.Text.ToString()) ; 
    
    stringBuilder.Append(" Where Age=") ; 
    stringBuilder.Append(ageValue) ; 
    stringBuilder.Append(";") ; 
    
    
    var result = stringBuilder.ToString(); 
    
    +0

    -1使用參數化的SQL,String.Format會更好。 – Polyfun 2012-08-01 09:57:15

    0

    嘗試這是我的C語言編寫我的內聯SQL銳:

    string strSQL = ""; 
    strSQL += " Update MyTable Set "; 
    strSQL += " FName = '" + fname.Text.ToString() + "' "; 
    strSQL += " ,LName = '" + lname.Text.ToString() + "' "; 
    strSQL += " ,Age = '" + ageValue    + "' "; 
    strSQL += " ,Come = '" + from.Text.ToString() + "' "; 
    strSQL += " ,To = '" + to.Text.ToString() + "' "; 
    strSQL += " Where Age = '" + ageValue + "' "; 
    

    易於閱讀,工作正常。

    您也可以爲您connent到數據庫之前添加這只是你的查詢如下所示:

    Response.Write(strSQL); 
    return; 
    

    這將告訴你什麼被髮送到服務器並使其更容易一點發現錯誤。

    相關問題