将记录添加到Access数据库时“INSERT INTO语句中的语法错误”

我已经搜索了几个小时来解决这个问题,但我读过的内容并没有帮助。 尝试将此记录添加到Access数据库时,我收到此错误。 我正在尝试保存的文件名为Cats.accdb,其中包含一个名为Cats的表。

表列名称
CatId(类型:文字)
CatName(文字)
头发(文字)
尺寸(文字)
CareType(文字)
备注(文字)
AdoptDate(日期/时间一般日期),权重(double),年龄(整数)(我已经在C#代码中注释了对这些列的任何引用,试图用简单的旧文本框进行调试。起初我以为是因为与使用DateTimePicker有关,但是在注释掉后仍然会抛出错误。)

C#代码

Cat temp = new Cat(txtCatName.Text, txtHair.Text, txtSize.Text, txtCareType.Text, txtNotes.Text); public string AddCat() { string strFeedback = ""; string strSQL = "INSERT INTO Cats (CatName, Hair, Size, CareType, Notes) VALUES (@CatName, @Hair, @Size, @CareType, @Notes)"; OleDbConnection conn = new OleDbConnection(); string strConn = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=Data\Cats.accdb; Persist Security Info=False;"; conn.ConnectionString = strConn; OleDbCommand comm = new OleDbCommand(); comm.CommandText = strSQL; comm.Connection = conn; comm.Parameters.AddWithValue("@CatName", CatName); comm.Parameters.AddWithValue("@Hair", Hair); comm.Parameters.AddWithValue("@Size", Size); comm.Parameters.AddWithValue("@CareType", CareType); comm.Parameters.AddWithValue("@Notes", Notes); //comm.Parameters.AddWithValue("@AdoptDate", AdoptDate); //comm.Parameters.AddWithValue("@Weight", Weight); //comm.Parameters.AddWithValue("@Age", Age); { conn.Open(); strFeedback = comm.ExecuteNonQuery().ToString() + " record has been added successfully!"; conn.Close(); } catch (Exception err) { strFeedback = "ERROR: " + err.Message; } return strFeedback; lblFeedback.Text = temp.AddCat(); 

谢谢你提供的所有帮助!

Size是保留关键字 。 在名称周围添加括号以指定它是标识符:

 string strSQL = "INSERT INTO Cats (CatName, Hair, [Size], CareType, Notes) VALUES (@CatName, @Hair, @Size, @CareType, @Notes)"; 

或者,将字段名称更改为非关键字。

在MS Access OLEDB中,我相信您使用位置标记而不是参数名称。

 string strSQL = "INSERT INTO Cats (CatName, Hair, Size, CareType, Notes) VALUES (?, ?, ?, ?, ?)";