插入到C#链接到MS Access的语句中的语法错误ADO.NET

Moh*_*wat 0 c# database sql-server ado.net ms-access

每个人我写代码将一些数据插入Microsoft Access数据库,但我有一个错误"插入语句中的语法错误"我不知道为什么!有人帮帮我吗?提前致谢 ; 码:

 OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data  Source=D:\me\Library Store\Library Store\Store.accdb");
    try
    {
        conn.Open();

        OleDbCommand cmd = new OleDbCommand();
        cmd.Connection = conn;
        cmd.CommandText = "INSERT INTO Libarary ( ISBN, Name, Gategory, Author, Cost, Date) VALUES ( @ISBN, @Name, @Gategory, @Author, @Cost, @Date) ";
        cmd.Parameters.AddWithValue("@ISBN", ISBNTB.Text);
        cmd.Parameters.AddWithValue("@Name", NameTB.Text);
        cmd.Parameters.AddWithValue("@Gategory", GategoryTB.Text);
        cmd.Parameters.AddWithValue("@Author", AuthorTB.Text);
        cmd.Parameters.AddWithValue("@Cost", int.Parse(CostTB.Text));
        cmd.Parameters.AddWithValue("@Date", dateTimePicker1.Text);

        cmd.ExecuteNonQuery();

            MessageBox.Show("Data Added!");
            conn.Close();


    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.ToString());
    }
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Ste*_*eve 6

当您的一个或多个字段使用保留关键字时,您需要将该字段包含在方括号中.(一个非常讨厌的问题).在您的查询中,您使用两个保留关键字:DATE和NAME

cmd.CommandText = "INSERT INTO Libarary ( ISBN, [Name], Gategory, Author, Cost, [Date]) " + 
                  "VALUES ( @ISBN, @Name, @Gategory, @Author, @Cost, @Date) ";
Run Code Online (Sandbox Code Playgroud)

如果还不晚,我建议你重命名这些字段以避免将来出现这种问题.