Tôi đang gặp sự cố khi nhận các hướng dẫn để khớp trong SQLite (0.4.8) khi sử dụng các thông số, khi tôi sử dụng một cái gì đó như userGuid = 'guid here'
nó hoạt động, nhưng userGuid = @GuidHere
thì không. Ai có ý tưởng gì không?Vấn đề tham số SQLite với các hướng dẫn
Tạo:
CREATE TABLE Users
(
UserGuid TEXT PRIMARY KEY NOT NULL,
FirstName TEXT,
LastName TEXT
)
mẫu dữ liệu:
INSERT INTO Users (UserGuid, FirstName, LastName)
VALUES ('e7bf9773-8231-44af-8d53-e624f0433943', 'Bobby', 'Bobston')
Xóa Tuyên Bố (làm việc):
DELETE FROM Users WHERE UserGuid = 'e7bf9773-8231-44af-8d53-e624f0433943'
Tuyên Bố Xóa (không làm việc):
DELETE FROM Users WHERE UserGuid = @UserGuid
.210
Dưới đây là một chương trình C# cho thấy vấn đề của tôi:
using System;
using System.Data.SQLite;
namespace SQLite_Sample_App
{
class Program
{
static void Main(string[] args)
{
Do();
Console.Read();
}
static void Do()
{
using(SQLiteConnection MyConnection = new SQLiteConnection("Data Source=:memory:;Version=3;New=True"))
{
MyConnection.Open();
SQLiteCommand MyCommand = MyConnection.CreateCommand();
MyCommand.CommandText = @"
CREATE TABLE Users
(
UserGuid TEXT PRIMARY KEY NOT NULL,
FirstName TEXT,
LastName TEXT
);
INSERT INTO Users (UserGuid, FirstName, LastName)
VALUES ('e7bf9773-8231-44af-8d53-e624f0433943', 'Bobby', 'Bobston');
";
MyCommand.ExecuteNonQuery();
MyCommand.CommandText = "SELECT Count(*) FROM Users WHERE UserGuid = 'e7bf9773-8231-44af-8d53-e624f0433943'";
Console.WriteLine("Method One: {0}", MyCommand.ExecuteScalar());
MyCommand.Parameters.AddWithValue("@UserGuid", new Guid("e7bf9773-8231-44af-8d53-e624f0433943"));
MyCommand.CommandText = "SELECT Count(*) FROM Users WHERE UserGuid = @UserGuid";
Console.WriteLine("Method Two: {0}", MyCommand.ExecuteScalar());
}
}
}
}
EDIT:
Cũng có vẻ như rằng AddParamWithValue dịch cho người đại diện 16byte của một Guid vì vậy tôi đoán tôi thực sự phải dịch tất cả các guids để dây đầu tiên ... kinda gây phiền nhiễu.