0

这里有问题,不知道出了什么问题……顺便说一句,这是在 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

4 回答 4

4

检查 \ 字符,如果表架构很好,它可能会产生问题。我会建议使用 permeter insert 而不是 inline。这是语法。

stmt.text = "INSERT INTO tablename (col1, col2) VALUES (:A, :B)";
        stmt.clearParameters();
        stmt.parameters[":A"] = value
        stmt.parameters[":B"] = value
        stmt.execute();
于 2013-09-03T18:04:35.453 回答
0

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

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

于 2013-09-03T18:14:01.277 回答
0

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

于 2014-10-17T10:24:39.323 回答
0

如果可能,使用参数化查询。

如果没有 - 尝试在你的值中转义反斜杠'V:\\Folder Path\\Folder'

于 2013-09-03T18:08:06.890 回答