C#中与SQL Server唯一标识符对应的是什么?

22

在C#中,我应该使用什么数据类型来处理SQL Server的 uniqueidentifier

我需要进行任何转换吗?


4
这里列出了所有 SQL 数据类型对应的 .NET 数据类型:http://msdn.microsoft.com/zh-cn/library/ms131092.aspx - user121301
3个回答

24

3
如果你有其他参数数据类型映射问题,请查看此链接:http://msdn.microsoft.com/en-us/library/ms131092.aspx - Justin Niessner

15

System.Guid

从数据库读取可空唯一标识符(Uniqueidentifier)列时,务必在尝试分配给 Guid 实例之前检查该值是否为 null,因为 Guids 不可空。例如:

... /// using recordset rs


// generates exception if rs["my_guid"] is null
Guid g = (Guid)rs["my_guid"];

// returns Guid.Empty {0000000-.....} if db value is null
Guid g = (Guid)(rs["my_guid"] ?? Guid.Empty); 

等等。


只需使用Guid?即可,也称Nullable<Guid>,这样您就可以分配null。 - Daniel Brückner
这并不总是有效的 - 也就是说,如果您要传递给不允许可空 Guid 的代码,则必须最终将其转换为非可空 Guid。 - 3Dave
有没有使用Guid的完整源代码示例?并且考虑DBNull!= null? - Kiquenet

2

如果你从SQLDataReader中获取值,请确保在尝试使用它之前对其进行与DBNull的比较检查。有时该值也可以被解释为字符串,因此你需要输入New Guid(rs [“my_guid”])来确保你在代码中使用的是Guid。


登录以评论其他答案。 - jinsungy
2
“登录以评论其他答案”,你看到我的用户名和图标了吗?我已经登录了,但是我没有足够的声望来评论别人的帖子... - Kalle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接