gpt4 book ai didi

c# - 在不使用字符串的情况下将 ExecuteScalar 结果转换为 GUID?

转载 作者:太空狗 更新时间:2023-10-30 01:10:28 24 4
gpt4 key购买 nike

如何在不首先使用 .ToString() 传递给 GUID 的构造函数的情况下将 ExecuteScalar 命令的结果转换为 GUID 结构?

这样做的原因是性能,而不是在内存中创建数千个不必要的字符串对象。

可以使用阅读器和 GetGUID 方法,但我看不到任何关于如何在使用标量值时实现相同目的的引用。

更新:我还需要处理 DBNull 值

最佳答案

假设您的 sql 语句不能返回 DBNull.Value,那么您可以:

Guid myResult = (Guid) cmd.ExecuteScalar();

编辑:既然我们知道您需要处理空值....:-)

我可以想到两种处理 null 的方法 - 使用可为 null 的 Guid 并将其设置为 null,或者使用常规 Guid 并将其设置为 Guid.Empty 如果您的 SQL 语句返回 null。

考虑检查 DBNull.Value 的某种形式的辅助函数或扩展方法。

    static Guid? GetGuidFromDb(object dbValue)
{
if (dbValue == null || DBNull.Value.Equals(dbValue))
{
return null;
}
else
{
return (Guid) dbValue;
}
}

    static Guid GetGuidFromDb(object dbValue)
{
if (dbValue == null || DBNull.Value.Equals(dbValue))
{
return Guid.Empty;
}
else
{
return (Guid) dbValue;
}

然后调用

Guid? myResult = GetGuidFromDb(cmd.ExecuteScalar());

注意 - 如果您的 SQL 命令返回 UniqueIdentifier 以外的数据类型,这将会阻塞。

关于c# - 在不使用字符串的情况下将 ExecuteScalar 结果转换为 GUID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4648812/

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