SQLite语法错误,查询看起来没问题

时间:2013-09-03 17:57:52

标签: c# .net sqlite

在这里遇到问题,不确定是什么问题......顺便说一下,这是在C#中。

Problem with DB: SQLite error
near "s": syntax error

以下是查询:

INSERT INTO information (name, picfolder, picstore) VALUES ('My Name','V:\Folder Path\Folder',1)

该表是用这个创建的:

CREATE TABLE information (name VARCHAR(255), picfolder VARCHAR(255), picstore BOOLEAN)

所有c#代码(请求):

        try
        {
            query = "CREATE TABLE information (name VARCHAR(255), picfolder VARCHAR(255), picstore BOOLEAN)";
            SQLiteCommand command1 = new SQLiteCommand(query, db); command1.ExecuteNonQuery();
        }
        catch (Exception error)
        {
            MessageBox.Show("Problem with DB: " + error.Message);
            db.Close(); System.IO.File.Delete(this.created_path);
            this.created_path = null; return;
        }

        try
        {
            query = "INSERT INTO information (name, picfolder, picstore) VALUES ('" + name + "','" + folder +"'," + (copy ? 1 : 0).ToString() + ")";
            SQLiteCommand command2 = new SQLiteCommand(query, db); command2.ExecuteNonQuery();
        }
        catch (Exception error)
        {
            MessageBox.Show("Problem with DB: " + error.Message + "\n"+query);
            db.Close(); System.IO.File.Delete(this.created_path);
            this.created_path = null; return;
        }

4 个答案:

答案 0 :(得分:4)

检查\字符如果表架构正常,它可能会产生问题。我建议使用permeter插入而不是内联。这是语法。

stmt.text = "INSERT INTO tablename (col1, col2) VALUES (:A, :B)";
        stmt.clearParameters();
        stmt.parameters[":A"] = value
        stmt.parameters[":B"] = value
        stmt.execute();

答案 1 :(得分:0)

尽可能使用参数化查询。

如果不是 - 尝试在值'V:\\Folder Path\\Folder'

中转义反斜杠

答案 2 :(得分:0)

这听起来很愚蠢,但实际上我的做法很好。

问题是我输入的文件夹路径中有一个'(分号),这弄乱了查询。通过“围绕价值观来修复它。

答案 3 :(得分:0)

我遇到了同样的错误,并设法通过使用nuget中的SQLite来摆脱它们。