在这里遇到问题,不确定是什么问题......顺便说一下,这是在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;
}
答案 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来摆脱它们。