所以我有一个第三方应用程序,我必须连接,这个应用程序需要我的用户表中的用户ID。问题是我将我的用户ID存储为GUID,第三方应用只接受一个整数。所以我认为,如果有一种方法可以将GUID转换为整数,那么可以将其转换回来(因为我从他们的服务器获取有关用户ID的通信),那么我不必重新编码太多。有任何想法吗?将GUID转换为整数和返回
回答
你需要一个库从GUID到第三方的整数的映射:无论是新的“INT thirdPartyId”在现有的用户表中的字段,或一个新表。
Guid比整数大得多,并且不能放入整数。
您需要一个128位的整数类型来保存等价的GUID。您可以使用Guid的ToByteArray()方法来获取字节和接受字节数组的构造函数来恢复Guid。
您也可以将您的GetHashCode()方法来获得一个整数,而是两个不同的GUID可能具有相同的散列码,因为有更多可能的GUID超过32位整数。
的整数使用32位,而GUID是128位 - 因此,有没有办法为GUID转换为整数而不丢失信息,所以你可以把它转换回来。
编辑:您可以将GUID也许存储到您指定每一个唯一的整数ID的GUID的表。这样,您可以在给定整数ID的情况下获取GUID。
添加整数标识列,基本上是第二个ID列,并将该列ID赋予应用程序。
创建一个新的表(MyUserMappings)具有两列
1)ThirdPartyUserID(INT,NOT NULL,IDENTITY(1,1))
2)MyUserID(GUID,NOTNULL)
插入做
INSERT INTO MyUserMappings(MyUserID) SELECT MyGUIDUserID FROM MyUsers所有GUID从用户名到该表
您还需要在MyUsers表上放置一个触发器,以便每当MyUsers表获取新行时,都会在MyUsersMappings表中插入一个新行。
现在创建一个视图,显示从您的MyUsermappingsTable您MyUsers表和第三方用户ID字段中的所有领域。
现在,您不需要对现有应用程序进行任何DAL更改,并且原始表格不受影响。所以你现有的应用程序将保持原样。而你的新代码可以查询视图而不是表格来返回整数ID和所有其他用户信息。
干杯。
- 1. Powershell将整数转换为guid
- 2. 将guid转换为数值
- 3. 将GUID数组转换为int数组
- 4. 将Guid转换为Cassandra UUID
- 5. SSIS:将INT转换为GUID?
- 6. Flex:将GUID转换为Base64
- 7. 将GUID转换为varchar(32)
- 8. 将GUID转换为System.Drawing.Imaging.ImageFormat
- 9. 将URI转换为GUID
- 10. 将stringbuilder转换为guid
- 11. 将Raw(16)转换为GUID
- 12. 将GUID转换为等价数字
- 13. 将时间转换为秒和返回
- 14. 将整数转换回SecByteBlock?
- 15. 将整数转换为二进制返回错误的值
- 16. 将US-ASCII编码的字节转换为整数并返回
- 17. 如何将IPv4地址转换为整数并返回C?
- 18. 将返回的值转换为x位长整数
- 19. 将字符串值转换回GUID值
- 20. 转换GUID为长
- 21. SQL Server 2008从BIGINT转换为UNIQUEIDENTIFIER/GUID并返回
- 22. Guid最快转换为字符串并返回?
- 23. 将time_t转换为整数
- 24. 将bytearray转换为整数
- 25. 将BigDecimal转换为整数
- 26. 将NSString转换为整数
- 27. 将整数转换为titlesForSegmentAtIndex
- 28. 将DateTime转换为整数
- 29. 将varchar转换为整数
- 30. 将CGPDFPageRef转换为整数
整数的大小取决于系统。 – 2008-12-30 21:04:38
但是,然后,你限制自己2^32 ID。 – LeppyR64 2008-12-30 21:04:44