2013-08-16 58 views
1

我從這段代碼中得到一個異常,說我在我的sql語法中有一個錯誤。此外,它說這個錯誤是在第1行,這是沒有意義的,因爲第一行只是說:使用系統; 我已經使用了超過一個小時的代碼調試,並且我無法弄清楚。 以下是代碼。誰能看到一個錯誤?謝謝Mysql問題。異常

public void SaveReferenceToDatabase(string billedNavn, string placering, string description, DateTime date) 
    { 
     Sql sql = new Sql(); 

     string query = "INSERT INTO GalleryImages (BilledNavn, Placering, Beskrivelse, Dato)" + 
         "VALUES (?billedNavn, ?placering, ?description, ?date"; 

     MySqlCommand cmd = sql.Command(query); 

     cmd.Parameters.AddWithValue("billedNavn", billedNavn); 
     cmd.Parameters.AddWithValue("placering", placering); 
     cmd.Parameters.AddWithValue("description", description); 
     cmd.Parameters.AddWithValue("date", date); 

     sql.ConnOpen(); 
     cmd.ExecuteNonQuery(); 

     sql.ConnClose(); 
    } 

Ps。執行cmd.ExecuteNonQuery()時引發異常

+1

第1行可能指代MySQL語句的第1行。我能看到的唯一問題是你的字符串構建。你有沒有想過「拿督」和「價值」之間的空間? – Dreami

+1

我不記得關於c#的任何內容,但它像sql錯誤,快速看起來像是缺少查詢中的右括號 –

+0

@EmilioGort你是指c#而不是C++嗎? –

回答

7

您錯過了SQL代碼(SQL代碼的第二行)的values()子句的結尾)

錯誤消息指出錯誤在SQL代碼的第一行,這是因爲你在你建立的SQL字符串中沒有換行符(這是完全正常的,只是在搜索時可能有點惱人錯誤位置)。

+1

這並不證明它是自己的答案,所以我會捎帶回去,但另一個可能的錯誤是「Dato」和「 'VALUES'。所以它看起來像'Dato)VALUES',如果它在一行上,這會導致錯誤。 – Jetti

+0

謝謝大家,這是結束)導致它。我無法相信我看不到這一點。我想我一直在盯着這該死的代碼太久了。再次感謝 – AomSet