2011-05-04 53 views
0

我一直在遇到問題,要將文本從文本框添加到訪問數據庫中。這是一段很長的文本,當我把它保存到3或4個句子時,它被插入沒有錯誤,但只要它看起來太長,我得到以下錯誤... System.Data.OledbException語法錯誤(缺少運算符)在查詢表達式中。 我在Web服務中添加了一個方法,它添加了信息,並且它與導致錯誤的一個文本框insersiont(在本例中是一本書的評論)的長度有關。提交文本到訪問數據庫的問題

網頁的另一個奇特功能是,只有在第二次點擊時,提交按鈕纔會觸發......第一次點擊後會有一個回覆,然後只有第二次點擊纔會將信息實際插入到數據庫中。然而,我不認爲這是導致無法在訪問數據庫中插入段落的最初錯誤的原因(我已設置備忘錄的字段)。

任何可能性,以澄清爲什麼錯誤發生的一些光。 這裏是我真正的網絡方法。

[WebMethod] 
public void bookRatedAdd(string title, int rating, string review, string ISBN, string userName) 
{ 
    OleDbConnection conn; 

    conn = new OleDbConnection(@"Provider=Microsoft.Jet.OleDb.4.0; 
               Data Source=" + Server.MapPath("App_Data\\BookRateInitial.mdb")); 

    conn.Open(); 

    OleDbCommand cmd = conn.CreateCommand(); 

    cmd.CommandText = @"INSERT INTO bookRated([title], [rating], [review], [frnISBN], [frnUserName])VALUES('" + title + "', '" + rating + "','" + review + "','" + ISBN + "', '" + userName + "')"; 
    cmd.ExecuteNonQuery(); 
    conn.Close(); 
} 

它與審覈時,我得到的錯誤,而我設置爲備註字段(在訪問數據庫。

+0

你能把一個斷點只是在行cmd.ExecuteNonQuery並張貼cmd.CommandText的實際值 – Johnv2020 2011-05-04 20:53:56

回答

1

也許你會插入到數據庫的審查中有單引號?我問,因爲我沒有看到,他們得到逃脫(變成兩個單引號)在代碼中創建的查詢,即:

cmd.CommandText = @"INSERT INTO bookRated([title], [rating], [review], [frnISBN], [frnUserName])VALUES('" + title.Replace("'", "''") + "', '" + rating.Replace("'", "''") + "','" + review.Replace("'", "''") + "','" + ISBN + "', '" + userName + "')"; 
+0

更好的是,使用參數。 – 2011-05-05 03:55:49