【问题标题】:SQLite Insert error due to SQLite Command {"SQLite error\r\nnear \"Values\": syntax error"}由于 SQLite 命令导致 SQLite 插入错误 {"SQLite error\r\nnear \"Values\": syntax error"}
【发布时间】:2017-11-28 18:44:45
【问题描述】:

我收到此错误 '{"SQLite error\r\nnear \"Values\": syntax error"}'。 使用以下代码块。

    using (SQLiteConnection connection = new SQLiteConnection())
    {
        connection.ConnectionString = ConnectionString;
        connection.Open();
        using (SQLiteCommand insertSQL = new SQLiteCommand(connection))
        {
            insertSQL.CommandText = "INSERT INTO BetaValues(Name, Values)  VALUES(@param1, @param2)";
            //insertSQL.CommandType = CommandType.Text;
            insertSQL.Parameters.Add("@param1", DbType.String).Value = beta.Name.ToString();
            insertSQL.Parameters.Add("@param2", DbType.String).Value = beta.ValuesXML.ToString();
            insertSQL.ExecuteNonQuery();
        }

我的表的数据定义如下。

CREATE TABLE BetaValues (
    idBetaValues INTEGER     PRIMARY KEY,
    Name         STRING (20) NOT NULL
                             UNIQUE,
    [Values]     TEXT        UNIQUE
);

我一直在试图解决这个错误,但我找不到我收到上一个错误的原因。

【问题讨论】:

  • Values 是 SQL 中的保留字。您必须像在 CREATE 语句中一样在 INSERT 语句中转义名称。

标签: c# sql sqlite


【解决方案1】:

由于VALUES 是SQL 运算符,您需要使用分隔标识符来正确识别列。在 SQLite 中,您可以在列名周围添加方括号 [ColumnName]。注意还有other quotes possible。查看您已经编写的创建查询并修改您的插入语句,如

INSERT INTO BetaValues(Name, [Values]) VALUES(@param1, @param2)

解决您的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-18
    • 1970-01-01
    • 2020-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多