{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类型变量
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)