gpt4 book ai didi

c# - 如何将MySQL生成的UUID放入C#变量中

转载 作者:行者123 更新时间:2023-11-29 07:01:19 25 4
gpt4 key购买 nike

这里是查询:

string query = @"INSERT INTO session (PK_Id, user_id, login_time, machine_ip, machine_fingerprint) 
VALUES (UUID(), @UId, @LogInTime, @MIp, @MFingerPrint);
";

现在我需要返回这个最后插入的 id,这是一个由 MySQL 生成的 UUID。据我所知,UUID 没有 select_last_insert_id() 函数!!我读过 php,你可以先将 UUID() 函数分配给一个变量,然后返回该值。但是如何在 C# 中实现这一点呢?

类似这样,但不完全是:

string query = @"INSERT INTO session (PK_Id, user_id, login_time, machine_ip, machine_fingerprint) 
VALUES (@UUID = SELECT UUID(), @UId, @LogInTime, @MIp, @MFingerPrint);
"; //how to do this here?

这是我的更多代码:

string query = @"INSERT INTO session (PK_Id, user_id, login_time, machine_ip, machine_fingerprint) 
VALUES (@UUID = SELECT UUID(), @UId, @LogInTime, @MIp, @MFingerPrint);
";

try
{
if (_conn.State != ConnectionState.Open)
_conn.Open();
MySqlCommand cmd = new MySqlCommand(query, _conn);
cmd.Parameters.AddWithValue("@UId", Utility.usr.Id);
cmd.Parameters.AddWithValue("@LogInTime", DateTime.Now);
cmd.Parameters.AddWithValue("@MIp", GetMachineIP());
cmd.Parameters.AddWithValue("@MFingerPrint", GetHardwareFingerPrint());

var s= Convert.ToString(cmd.ExecuteScalar()); //this returns an empty string :(
//I need to get it to any .NET data type, string, or Guid or byte[] or anything.

但是我需要这种 s 的数据类型在查询中的另一个 WHERE 子句中使用,如下所示:

string query = @"UPDATE session SET logout_time = @LogOutTime 
WHERE user_id = @UId AND PK_Id = @SessionId";

try
{
if (_conn.State != ConnectionState.Open)
_conn.Open();
MySqlCommand cmd = new MySqlCommand(query, _conn);
cmd.Parameters.AddWithValue("@UId", Utility.usr.Id);
cmd.Parameters.AddWithValue("@SessionId", s);
cmd.Parameters.AddWithValue("@LogOutTime", DateTime.Now);
cmd.ExecuteScalar();

这里的@"SessionId"是同表的UUID字段。所以基本上,我如何在 C# 中获取 MySQL varbinary 字段,以便我可以通过在另一个查询中指定 WHERE 来使用该类型进行更新?

在 MySQL 表中,UUID 字段是 varbinary (我希望看到一些解决方案,它不是另一个 php 链接,也不是要求我切换到数据库中的 char 数据类型:))。

编辑: 这里的问题是我们已经将大量由 MySQL 生成的 UUID 添加到表中,所以我对将 MySQL UUID 更改为 .NET Guid 有点担心。如果那是唯一的解决方法,我会考虑的。只是这是我们第一次需要返回插入的 UUID 值,以便我可以在另一个查询中更新另一个时间点。

一个子问题:.NET Guid 是否与 MySQL UUID 完全相同?

最佳答案

您可以使用 Guid 类型,它是 UUID 的 MS 实现。您应该知道,在将数据插入数据库时​​,如果 MySQL 驱动程序不熟悉处理 Guid,您可能需要将 Guid 转换为 ByteArray。参见 Store GUID in MySQL from C#举个例子。

关于c# - 如何将MySQL生成的UUID放入C#变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10032071/

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