SQL Serverc#.NET中生成GUID

GUID(全局统一标识符)是借助当同样令机器上生成的数字,它保证对在同等时空中的有机器都是绝无仅有的。通常平台会提供生成GUID的API。生成算法很有趣,用到了以太网卡地址、纳秒级时间、芯片ID码和广大恐怕的数字。GUID的绝无仅有缺点在转变的结果出错会较好。”

1.
一个GUID为一个128员之平头(16字节),在用唯一标识符的情形下,你可以有着电脑及网络中用即时一整数。

  1. GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每个 x 是
    0-9 或 a-f
    范围外的一个十六进制的数字。例如:337c7f2b-7a34-4f50-9141-bab9e6478cc8
    即为中的 GUID 值。

  2. 世界上(Koffer注:应该是地上)的其余两高电脑都未会见变卦重复的 GUID
    值。GUID
    主要用于在颇具多单节点、多台计算机的网络或系受,分配要怀有唯一性的标识符。

  3. 以 Windows 平台上,GUID
    用特别大:注册表、类与接口标识、数据库、甚至自动生成的机器名、目录名等。

.NET中使用GUID 

当Windows开发人员需要一个唯一数值时,他们平凡采取到一个大局唯一标识符(GUID,
Globally Unique
Identifier)。微软采取GUID术语来代表马上同唯一再三值,而及时同样数值会标识一个实体,比如一个Word文档。

一个GUID为一个128各类的整数(16字节),在使用唯一标识符的景象下,你可以当具备电脑与网络里以就一整数。

即时同一篇稿子以解释.NET框架如何尽其无与伦比老潜力地为公建自己之GUID。

汝所盼的

GUIDs被用于所有Windows环境。当您以一个Windows系统中精心阅读注册表时,你得观看GUIDs被大用于唯一识别程序。特别地,它们当做次的Ids集中在HKEY_CLASSES_ROOT部分(AppID键)。

立即是一个榜首的GUID的格式:

936DA01F-9ABD-4d9d-80C7-02AF85C822A8

当.NET中生成一个GUID

处理一个唯一标识符使得存储和取得信息转换得更其爱。在拍卖一个数据库被及时同一效果转移得愈加有因此,因为一个GUID能够操作一个主键。

无异于,SQL Server也很好地并了GUID的用。SQL
Server数据类型uniqueidentifier能够存储一个GUID数值。你可以由此使用NEWID()函数在SQL
Server中生成当下无异屡次值,或者好以SQL
Server之外生成GUID,然后重新手动地插这同频繁值。

每当.NET中,后面同样种植方式显得越直接。.NET
Framework中的基本System类包括GUID数值类型。除此之外,这无异于数值类型包含了拍卖GUID数值的点子。特别地,NewGUID方法允许而死轻地充分成一个新的GUID。

以下的C#指令行程序说明这等同运过程:
using System;
namespace DisplayGUID {
class GuidExample {
static void Main(string[] args) {
GenerateGUID();
}
static void GenerateGUID() {
Console.WriteLine(“GUID: ” + System.Guid.NewGuid().ToString());
} } }

脚为这无异于程序的输出:(虽然不同体系中的GUID是变之。)

GUID: 9245fe4a-d402-451c-b9ed-9c1a04247482

此地是运VB.NET时之同一代码:

Module BuilderExamples
Sub Main()
GenerateGUID()
End Sub
Public Sub GenerateGUID()
Console.WriteLine(“GUID: ” + System.Guid.NewGuid().ToString())
End Sub
End Module

此间是以J#不时的一样代码:

package BuilderExamples;
import System.Console;
public class GUIDExample {
public GUIDExample() { }
public static void main(String[] args) {
GenerateGUID();
}
static void GenerateGUID() {
Console.WriteLine(“GUID: ” + System.Guid.NewGuid().ToString());
} }

以上范例使用及System.Guid空间名称的NewGuid函数来回到一个数值。(如果你在Visual
Basic中采用及马上一代码,你当谢谢这无异艺术的简洁性。)

于就一点及,你得看来GUID是一个那个好的职能,但以先后的哟地方采取及它们,并如何利用它?

在次中应用一个GUID

一个GUID可以以后台数据库中操作一个主键。以下代码应用一个GUID在一个后台数据库中贮存信息,这等同数据库含以下的排列:

pk_guid—uniqueidentifier数据类型
name—nvarchar数据类型
然出现一个涵盖文本框的简约Windows窗体。当选择按钮时,文本框中的数目给插入到数据库中。通过程序代码可以挺成一个GUID并储存在另列中:

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using Microsoft.ApplicationBlocks.Data;

namespace GuidDBExampleCSharp {
public class frmBuilderTest : Form {
private Label lblName;
private TextBox txtName;
private Button btnInsert;
private Container components = null;
public frmBuilderTest() {
InitializeComponent();
}
static void Main() {
Application.Run(new frmBuilderTest());
}

private string GenerateGUID() {
return System.Guid.NewGuid().ToString();
}

private void btnInsert_Click(object sender, System.EventArgs e) {
string cs = “server=(local);Initial Catalog=Northwind;Integrated
Security=SSPI”;
using ( SqlConnection conn = new SqlConnection(cs) ) {
try {
string sqlInsert = “INSERT INTO dbo.tblBuilderTest (pk_guid, [name])
VALUES (‘”

  • System.Guid.NewGuid().ToString() + “‘, ‘” + txtName.Text + “‘)”;
    conn.Open();
    SqlHelper.ExecuteNonQuery(conn, CommandType.Text, sqlInsert);
    } catch(Exception ex) {
    System.Console.Write(“Error: ” + ex.Message);
    } } } } }

旁一个GUID程序将一个唯一的标识符分配给一个.NET类或接口,也就是说,GUID作为一个属性被分配为类或接口。可以下标准属性语法来促成这无异于历程:
本文发表于www.bianceng.cn

咱得以扩展第一只范例来分配一个GUID。System.Runtime.InteropServices空间名称必须吃引述来采取GUID属性。以下C#代码实现了即无异于进程:

using System;
using System.Runtime.InteropServices;
namespace DisplayGUID {
[Guid(“9245fe4a-d402-451c-b9ed-9c1a04247482”)]
class GuidExample {
static void Main(string[] args) {
GenerateGUID();
}
static void GenerateGUID() {
Console.WriteLine(“GUID: ” + System.Guid.NewGuid().ToString());
} } }

GUID永远是有利的
对此程序支付的各个方面,.NET
Framework简化了树立和处理GUID数值的长河。在.NET程序要的地方,这无异效益异常轻地别唯一的数值。

相关文章