当前位置: 首页 > 面试题库 >

从C#将GUID存储在MySQL中

傅博瀚
2023-03-14
问题内容

试图将Guid持久保存在C#(.NET)的MySQL数据库中。MySQL列的类型为BINARY(16)。关于如何保留Guid,然后再从MySQL重新获得Guid的任何建议?在这里寻找代码答案:-)


问题答案:

弄清楚了。就是这样 …

数据库架构

CREATE TABLE `test` (                                            
     `id` BINARY(16) NOT NULL,                                      
     PRIMARY KEY  (`id`)                                            
)

string connectionString = string.Format("Server={0};Database={1};Uid={2};pwd={3}", "server", "database", "user", "password");

Guid orgId = Guid.NewGuid();
Guid fromDb = Guid.Empty;

using (MySqlConnection conn = new MySqlConnection(connectionString))
{
    conn.Open();

    using (MySqlCommand cmd = new MySqlCommand("INSERT INTO test (id) VALUES (?id)", conn))
    {
        cmd.Parameters.Add("id", MySqlDbType.Binary).Value = orgId.ToByteArray();
        cmd.ExecuteNonQuery();
    }

    using (MySqlCommand cmd = new MySqlCommand("SELECT id FROM test", conn))
    {
        using (MySqlDataReader r = cmd.ExecuteReader())
        {
            r.Read();
            fromDb = new Guid((byte[])r.GetValue(0));
        }
    }
}


 类似资料:
  • 问题内容: 我使用varchar(36)还是有更好的方法呢? 问题答案: 当我问到为对象存储GUID的最佳方法时,我的DBA问我为什么当我可以用Integer以4字节进行相同的操作时为什么需要存储16字节。自从他向我提出挑战以来,我认为现在是提起挑战的好时机。话虽如此… 如果要最大程度地利用存储空间,可以将GUId存储为CHAR(16)二进制文件。

  • 问题内容: 这是将UUID()生成的MySQL GUID / UUID转换为二进制文件(16)的最佳方法: 然后将其存储在BINARY(16)中 我应该知道以这种方式进行操作有什么影响? 问题答案: 含义不多。它会稍微减慢查询速度,但是您几乎不会注意到它。 无论如何都存储为内部。 如果要将二进制文件加载到客户端中并在客户端进行解析,请注意,它可能具有除initial之外的其他字符串表示形式。 的函

  • 问题内容: 由于数学上的限制,我不得不使用BigInteger类来表示值。 经过一些计算后,我想将结果(由2x BigInteger实例提供)存储到Mysql中… 存储此类对象的最佳数据类型是什么? 我在考虑使用Blob存储这些结果的二进制格式(128位)吗?但我想避免不必要的类型转换。 问题答案: 我建议使用Blob,然后使用构造函数从字节数组转到BigInteger,然后从另一种方法开始使用。

  • 问题内容: 我不敢相信我无法做到这一点,但我希望能够将当前日期和时间从php存储到mysql表中。 表中的列是类型datetime。我已经试过了 但是我的时间戳记为0000-00-00 00:00:00 这一定很容易做到,但我无法使其正常运行!我想使用来自php的时间戳,而不是使用mysql now()函数 问题答案: 不要将其另存为Unix Timestamp(输出),而是另存为DATETIME

  • 本文向大家介绍将值从MySQL SELECT语句存储到变量?,包括了将值从MySQL SELECT语句存储到变量?的使用技巧和注意事项,需要的朋友参考一下 让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出- 以下是将值从select存储到变量的查询- 现在您可以显示变量的值- 这将产生以下输出-

  • 问题内容: 我想将3.50存储到mysql表中。我有一个将其存储在其中的浮点数,但它存储为3.5,而不是3.50。如何获得尾随零? 问题答案: 不要将货币值存储为浮点型,请使用DECIMAL或NUMERIC类型: MySQL数值类型的文档 编辑和说明: 浮点值容易受到舍入误差的影响,因为它们的精度有限,因此除非您不在乎只得到9.99而不是10.00,否则应使用DECIMAL / NUMERIC,因