数据库里字段是uniqueidentifier类型的,怎么 *** 作

数据库里字段是uniqueidentifier类型的,怎么 *** 作,第1张

SQL Server为我们提供了UniqueIdentifier数据类型,并提供了一个生成函数NEWID( ),使用NEWID( )可以生成一个唯一的UniqueIdentifier。UniqueIdentifier在数据库中占用16个字节,出现重复的概率非常小,以至于可以认为是0。我们经常从注册表中看到类似

{45F0EB02-0727-4F2E-AAB5-E8AEDEE0CEC5}

的东西实际上就是一个UniqueIdentifier,Windows用它来做COM组件以及接口的标识,防止出现重复。在.NET里管UniqueIdentifier称之为GUID(Global Unique Identifier)。在C#中可以使用如下命令生成一个GUID:

Guid u = System.Guid.NewGuid()

对于上面提到的Order与OrderDetail的程序,如果选用UniqueIdentifier作为主键的话,我们完全可以避免上面提到的增加网络RoundTrip的问题。通过程序直接生成GUID填充主键,不用考虑是否会出现重复。

UniqueIdentifier字段也存在严重的缺陷:首先,它的长度是16字节,是整数的4倍长,会占用大量存储空间。更为严重的是,UniqueIdentifier的生成毫无规律可言,要想在上面建立索引(绝大多数数据库在主键上都有索引)是一个非常耗时的 *** 作。有人做过实验,插入同样的数据量,使用UniqueIdentifier型数据做主键要比使用Integer型数据慢,所以,出于效率考虑,尽可能避免使用UniqueIdentifier型数据库作为主键键值。

在sql语句中,出现将字符串转换为 uniqueidentifier 时失败的错误是因为转换时写错造成的。

解决方法和详细的 *** 作步骤如下:

1、首先,在“文件”中找到“新建”选项,点击其中的“项目”,如下图所示

2、其次,选择“控制台应用程序”,然后名称栏中写“Cast和字符串类型转换”并确定,如下图所示。

3、接着,Cast类型转换代码,如下图所示。

4、然后,测试Cast类型转换结果,如下图所示。

5、随后,字符串类型转换代码,如下图所示。

6、最后,测试字符串类型转换的结果,如下图所示。这样,问题便解决了。

声明的变量类型和对应数据库字段保持一致,你的表有个字段的数据类型是

uniqueidentifier(一般应该是表的主键字段)而你试图将它的值复制给一个VARCHAR类型变量


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9893526.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存