提交文本以访问数据库的问题

时间:2011-05-04 20:45:56

标签: c# asp.net

我在将文本框中的文本添加到访问数据库时遇到了问题。这是一段很长的文本,当我将它保留为3或4个句子时,它插入时没有错误但是只要看起来太长我就会得到以下错误... System.Data.OledbException语法错误(缺失operator)在查询表达式中。 我在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();
}

我正在查看错误,我设置为备忘录的字段(在访问数据库中。

1 个答案:

答案 0 :(得分:1)

您插入数据库的评论可能包含单引号吗?我问,因为我没有看到它们在构建查询的代码中被转义(变成两个单引号),即:

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