c# - 向Access数据库添加记录时"Syntax error in INSERT INTO statement"

标签 c# ms-access

我已经搜索了数小时以寻找解决此问题的方法,但我所阅读的内容无济于事。尝试将此记录添加到 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/

相关文章:

c# - WCF,更改端点的 baseAdress

c# - 我怎样才能得到我的应用程序的父进程的PID

vba - 用于启用/禁用表单中其他复选框的复选框

函数返回一个包含来自 Access 的信息的集合,但调用子程序无法读取该集合的元素

c# - .net 3.5 中的 string.Join()

c# - SqlCommand 中的变量在查询批处理中必须是唯一的。但它是吗?

excel - 使用 MS Access 交叉表查询时出现太多交叉表列标题错误

SQL转换加where

sql - Access SQL - 根据条件删除具有相同标识符的记录

C# 正则表达式