我在设计一个数据表,其中时间字段用作独特的标识。我本打算将当前时间(精确到秒)转换为一串数字,比如20120516184925,这样就可以和其他记录相区别了。
不过我在查询过程中,得到了一个函数。tofiletime(),我是这样用的。private string bs = (System.DateTime.Now).ToFileTime().ToString();这样,将当前时间转换为windows文件时间,也得到一串数字。不过,我想问一下,这个数字是唯一的吗?以后会否产生相同的数字?

解决方案 »

  1.   

    DateTime.Now.ToFileTime() 可以获得当前时间的长整型数字,这个数字应该是由年精确到微秒(或许更多)的,所以用它作文件名的话几乎不会重复,如果是多用户同时操作的程序(比如网站)可以考虑加上用户的IP或编号、用户名做尾缀,或者增加一个多为的随机数,或者以文件的字节数作为尾缀,都是比较可靠的做法。
      

  2.   

    靠椅考虑下Guid.NewGuid()GUID(全局统一标识符)是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成GUID的API。生成算法很有意思,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。GUID的唯一缺陷在于生成的结果串会比较大。
      

  3.   

    谢谢两位。我想直接用 时间 做为记录标识,不知是否可以,如下:private string bs = (System.DateTime.Now).ToString();用bs字段做为一个记录的标识,可以吗?
    用时间字段做为标识,会不会容易出错?
      

  4.   

    你如果要保证不重复性,最好用2楼说的GUID