最近有大量数据存入数据库时,因为主键为一个nvarchar类型,起初想着用int 类型,每次打开表的时候,获取最后一行的ID,然后让其++。 但发现由于字段是char类型,数据库对其进行了排序。再次插入数据时,末尾已经不再是最后一次插入的数据了。项目组其他人说,使用GUID,windows留有一个产生GUID的接口,可以产生GUID码,我们之后可以把得到的GUID转为我们使用的vchar。

        下面来介绍一下GUID,GUID中文被称为全局唯一标识符。是一种由算法生成的二进制长度为128位数字,转换为字符为32位字符串。在一个计算机中,基本不可能产生相同的GUID码,因为在其算法中加入了时间因素,以保证重复的情况不会发生。

        GUID码广泛的应用在许多产品中,如注册表,接口标识,数据库、系统目录等。

GUID组成:
  1. typedef struct _GUID {
  2. unsigned long Data1;
  3. unsigned short Data2;
  4. unsigned short Data3;
  5. unsigned char Data4[ 8 ];
  6. } GUID;
可以看到GUID定义是一个结构体。

生成GUID接口,windows API:
  1. ::CoCreateGuid(&guid)

下面给出具体生成GUID码的代码:
  1. const char* newGUID()
  2. {
  3. static char buf[64] = {0};
  4. GUID guid;
  5. if (S_OK == ::CoCreateGuid(&guid))
  6. {
  7. _snprintf(buf, sizeof(buf)
  8. , "{%08X-%04X-%04x-%02X%02X-%02X%02X%02X%02X%02X%02X}"
  9. , guid.Data1
  10. , guid.Data2
  11. , guid.Data3
  12. , guid.Data4[0], guid.Data4[1]
  13. , guid.Data4[2], guid.Data4[3], guid.Data4[4], guid.Data4[5]
  14. , guid.Data4[6], guid.Data4[7]
  15. );
  16. }
  17. return (const char*)buf;
  18. }


GUID(Globally Unique Identifier)全局唯一标识符的更多相关文章

  1. Introduction to Guid ( globally unique identifier )

    什么是 GUID? 全球唯一标识符 (GUID) 是一个字母数字标识符,用于指示产品的唯一性安装. 在许多流行软件应用程序(例如 Web 浏览器和媒体播放器)中,都使用 GUID. GUID 的格式为 ...

  2. GUID全局唯一标识符相关知识了解

     全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符.GUID主要用于在拥有多个节点.多台计算机的网络或系统中.在理想情 ...

  3. [ActionScript 3.0] AS3 GUID(全局唯一标识符)

    package com.controls { import flash.display.Sprite; import flash.system.Capabilities; public class G ...

  4. 全局唯一标识符(GUID,Globally Unique Identifier)

    全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符.GUID主要用于在拥有多个节点.多台计算机的网络或系统中.在理想情况 ...

  5. Identifier:GUID (全局唯一标识符)

    ylbtech-Miscellaneos-Identifier:GUID (全局唯一标识符) A,返回顶部 1, 全局唯一标识符(GUID,Globally Unique Identifier)是一种 ...

  6. GUID全局唯一标识符

         全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符.GUID主要用于在拥有多个节点.多台计算机的网络或系统中. ...

  7. GUID (全局唯一标识符)

         全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符.GUID主要用于在拥有多个节点.多台计算机的网络或系统中. ...

  8. JS生成全局唯一标识符(GUID,UUID)的方法

    全局唯一标识符(GUID,Globally Unique Identifier)也称作 UUID(Universally Unique IDentifier) . GUID是一种由算法生成的二进制长度 ...

  9. C# 全局唯一标识符 (GUID)

    一 C#  全局唯一标识符 (GUID) Represents a globally unique identifier (GUID). To browse the .NET Framework so ...

随机推荐

  1. 论文阅读-(ECCV 2018) Second-order Democratic Aggregation

    本文是Tsung-Yu Lin大神所作(B-CNN一作),主要是探究了一种无序的池化方法\(\gamma\) -democratic aggregators,可以最小化干扰信息或者对二阶特征的内容均等 ...

  2. hadoop 环境下不知道yarn端口可以通过此命令查找

    yarn jar hadoop-examples-2.6.0-mr1-cdh5.10.0.jar pi 1 30 hadoop-examples-2.6.0-mr1-cdh5.10.0.jar 此JA ...

  3. python全栈开发:hashlib加密

     哈希加密代码 #!/usr/bin/env python # -*- coding;utf-8 -*- """ 哈希加密模块中有很多算法,调用不同的算法执行不同的加密, ...

  4. UVALive-3722 留个坑,为什么费马小定理求逆元不对??

    #include <iostream> #include <cstdlib> #include <queue> #include <algorithm> ...

  5. python中的多线程编程与暂停、播放音频的结合

    先给两个原文链接: https://blog.csdn.net/u013755307/article/details/19913655 https://www.cnblogs.com/scolia/p ...

  6. html 按钮跳转问题(及其相关)

    1.点击一个按钮跳转到另一个页面 (网址)   两种写法: <button onclick="{location.href='location.html'}">获取现在 ...

  7. apache netbeans不再集成tomcat

    老版本 8.2之前的,集成tomcat,安装使用比较简单https://netbeans.org/features/index.html 新版本的阿帕奇netbeans,则不集成tomcat,使用时, ...

  8. Spring注解驱动(下)

    9.@PropertySource 加载配置文件 在xml中 我们加载property配置文件,是使用 <context:property-placeholder location=" ...

  9. Python学习day43-数据库(多表关系)

    figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...

  10. java连接SQLserver数据库模板代码

    package cn.mldn.lxh.dbc; import java.sql.Connection; import java.sql.DriverManager; public class Dat ...