我已经搜索了数小时以寻找解决此问题的方法,但我所阅读的内容无济于事。尝试将此记录添加到 Access 数据库时出现此错误。我要保存到的文件名为 Cats.accdb,其中有一个名为 Cats 的表。
表格列名:
CatId (type: text)
CatName (text)
Hair (text)
Size (text)
CareType (text)
Notes (text)
AdoptDate(日期/时间一般日期)、Weight( double )、Age(整数)(我在 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();
感谢您提供的任何帮助!
最佳答案
大小
是 reserved keyword .在名称两边添加方括号以指定它是一个标识符:
string strSQL = "INSERT INTO Cats (CatName, Hair, [Size], CareType, Notes) VALUES (@CatName, @Hair, @Size, @CareType, @Notes)";
或者,将字段名称更改为不是关键字的名称。
关于c# - 向Access数据库添加记录时"Syntax error in INSERT INTO statement",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30019828/