gpt4 book ai didi

c# - Guids 的 SQLite 参数问题

转载 作者:IT王子 更新时间:2023-10-29 06:28:36 26 4
gpt4 key购买 nike

我在使用参数时遇到了让 Guids 在 SQLite (0.4.8) 中匹配的问题,当我使用类似 userGuid = 'guid here' 的东西时它有效,但是 userGuid = @GuidHere 它没有。有人有什么想法吗?

创建:

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')

删除语句(工作):

DELETE FROM Users WHERE UserGuid = 'e7bf9773-8231-44af-8d53-e624f0433943'

删除语句(不工作):

DELETE FROM Users WHERE UserGuid = @UserGuid

这是一个显示我的问题的 C# 程序:

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());
}
}
}
}

编辑:

好吧,AddParamWithValue 似乎转换为 Guid 的 16 字节代表,所以我想我真的必须先将所有 guid 转换为字符串……有点烦人。

最佳答案

尝试将 GUID 的字符串而不是 GUID 对象传递给您的 AddWithValue 调用。

所以代替

MyCommand.Parameters.AddWithValue(
"@UserGuid", new Guid("e7bf9773-8231-44af-8d53-e624f0433943"));

这样做:

MyCommand.Parameters.AddWithValue(
"@UserGuid", "e7bf9773-8231-44af-8d53-e624f0433943");

关于c# - Guids 的 SQLite 参数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1055848/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com