最近有大量数据存入数据库时,因为主键为一个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. opencv-图像遍历

    #include "stdafx.h" #include<opencv2/opencv.hpp> #include<iostream> #include&l ...

  2. Android开发 Html工具类详解

    前言 在一些需求富文本显示或者编辑的开发情况下,数据都是用html的格式来保存文本信息的.而google是有提供解析html的工具类那就是Html.有了Html可以让TextView也支持富文本(其实 ...

  3. day08 网络设置、软件包管理

    网络设置 ifconfig //最小化安装时不可用,需要安装安装包,命令为查看网卡信息 yum install net-tools mtu 网卡的最大发送字节 iptables -F 清掉防火墙配置 ...

  4. 字符串哈希——1056E

    典型的字符串哈希题 字符串hash[i]:子串s[1-i]代表的值 要截取串s[l-r]  求hash[r]-hash[l-1]*F[len]即可 #include<bits/stdc++.h& ...

  5. PHP接收数据数据包的几个方式

    PHP默认识别的数据类型是application/x-www.form-urlencoded标准的数据类型. php获取post参数的几种方式 1.$_POST['paramName'] 只能接收Co ...

  6. ERROR in xxx.js from UglifyJs

    在打包项目的时候,出现如下的错误: 经过搜索找到原因: 这是因为webpack在打包vue文件时没有成功转换ES6的语法. 解决方案 解决方法很简单,加入babel-preset-es2015插件即可 ...

  7. mysql TO_DAYS()

    mysql TO_DAYS(date) 函数 TO_DAYS(date) 给定一个日期date, 返回一个天数 (从年份0开始的天数 ). mysql> SELECT TO_DAYS(95050 ...

  8. diskpart

    比如格式化成fat32 format fs=fat32 quick 比鼠标方便 如何使用: 打开cmd输入diskpart进入命令 首先 list disk 然后 然后 clean 然后 create ...

  9. Delphi的日志库

    1. 安装 Log4D下载: 官网地址 LoggerPro下载 GitHub地址 特点: log4d简单易用.性能稳定 LoggerPro貌似功能很强大,只是没有详细的文档,懒得翻源码 安装步骤 Lo ...

  10. python的命名规范

    包应该是简短的.小写的名字.如果下划线可以改善可读性可以加入.如mypackage. 模块与包的规范同.如mymodule. 类总是使用首字母大写单词串.如MyClass.内部类可以使用额外的前导下划 ...