我试图使用SQLite作为我的存储。我已经使用nuget添加了引用dll,并使用了语句。SQLite简单插入查询
我
private void SetConnection()
{
sql_con = new SQLiteConnection
("Data Source=c:\\Dev\\MYApp.sqlite;Version=3;New=False;Compress=True;");
}
private void ExecuteQuery(string txtQuery)
{
SetConnection();
sql_con.Open();
sql_cmd = sql_con.CreateCommand();
sql_cmd.CommandText = txtQuery;
sql_cmd.ExecuteNonQuery();
sql_con.Close();
}
,我发送查询TXT这样
public void Create(Book book)
{
string txtSqlQuery = "INSERT INTO Book (Id, Title, Language, PublicationDate, Publisher, Edition, OfficialUrl, Description, EBookFormat) ";
txtSqlQuery += string.Format("VALUES (@{0},@{1},@{2},@{3},@{4},@{5},@{6},@{7},{8})",
book.Id, book.Title, book.Language, book.PublicationDate, book.Publisher, book.Edition, book.OfficialUrl, book.Description, book.EBookFormat);
try
{
ExecuteQuery(txtSqlQuery);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
我的数据库正确地创建和使用有效数据通过本书的实例就可以了。但总是执行查询在这行代码上抛出异常:
sql_cmd.ExecuteNonQuery();
我明显在这里做错了什么,但我看不到。
更新:抛出的异常的消息是
SQL逻辑错误或丢失的数据库
无法识别的标记: “22cf”
这哪里是22cf
通过book.Id
GUID字符串的一部分。
抛出了什么异常? – Alireza
@Alireza更新了问题 – user2783193
我注意到你没有使用正式参数到你的SQL命令。这不是很明智,因为您不得不担心将数据呈现给SQL语句(即格式化日期,小数点分隔符等)。 –