Tôi đang cố gắng sử dụng SQLite làm bộ nhớ của mình. Tôi đã thêm dll tham chiếu bằng cách sử dụng nuget và sử dụng câu lệnh là tốt.Truy vấn chèn đơn giản SQLite
Tôi có
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();
}
và tôi gửi txt truy vấn như
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);
}
}
db của tôi này được tạo ra một cách chính xác và thông qua ví dụ cuốn sách với dữ liệu hợp lệ là ok. Tuy nhiên, ngoại lệ luôn được đưa ra khi thực hiện truy vấn trên dòng mã này:
sql_cmd.ExecuteNonQuery();
Tôi rõ ràng đang làm điều gì đó sai ở đây nhưng tôi không thể thấy.
Cập nhật: ném nhắn ngoại lệ là
lỗi SQL logic hoặc thiếu cơ sở dữ liệu
không được công nhận mã thông báo: "22cf"
nơi 22cf
này là một phần của truyền book.Id
chuỗi guid.
Ngoại lệ nào được ném? – Alireza
@Alireza cập nhật questio – user2783193
Tôi nhận thấy rằng bạn không sử dụng các tham số chính thức cho lệnh SQL của bạn. Điều này không phải là rất nhiều khuyến khích, bởi vì bạn sẽ phải lo lắng về việc trình bày dữ liệu vào một câu lệnh SQL (tức là ngày định dạng, dấu tách thập phân, v.v ...). –