System.Data.OleDb.OleDbException:查询值和目标字段的数量不同

本文关键字:字段 目标 OleDb Data OleDbException 查询 System | 更新日期: 2023-09-27 17:55:29

我得到了一些帮助,我非常感谢使用参数将信息插入数据库,因为我相信这样做是更好的做法。但是,我确实收到以下错误"查询值和目标字段的数量不同"。不知道为什么会这样。代码和数据库似乎很好。

[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)";
    //adding my parameters
    cmd.Parameters.AddRange(new OleDbParameter[]
    {
        new OleDbParameter("@title", title),
        new OleDbParameter("@rating", rating),
        new OleDbParameter("@review", review), 
        new OleDbParameter("@ISBN", ISBN), 
        new OleDbParameter("@userName", userName),
    });

    cmd.ExecuteNonQuery();
    conn.Close();
}

也许关于为什么存在此错误的建议?

亲切问候阿里安

System.Data.OleDb.OleDbException:查询值和目标字段的数量不同

@rating 参数之后的 INSERT 语句中有一个 . (句点) 而不是 (逗号)。

将 . 更改为逗号。

INSERT INTO bookRated([title], [rating], [review], [frnISBN], [frnUserName])
VALUES(@title, @rating, @review, @ISBN, @userName)

我认为这可能很简单,就像在指定参数的地方放置了一个句点来代替逗号一样简单:

@rating. @review

应该是:

@rating, @review