国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

C#中使用GUID的筆記

2019-11-14 16:32:23
字體:
供稿:網(wǎng)友

GUID(全局統(tǒng)一標(biāo)識符)是指在一臺機(jī)器上生成的數(shù)字,它保證對在同一時空中的所有機(jī)器都是唯一的。通常平臺會提供生成GUID的API。生成算法很有意思,用到了以太網(wǎng)卡地址、納秒級時間、芯片ID碼和許多可能的數(shù)字。GUID的唯一缺陷在于生成的結(jié)果串會比較大。” 
1. 一個GUID為一個128位的整數(shù)(16字節(jié)),在使用唯一標(biāo)識符的情況下,你可以在所有計(jì)算機(jī)和網(wǎng)絡(luò)之間使用這一整數(shù)。

2. GUID 的格式為“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每個 x 是 0-9 或 a-f 范圍內(nèi)的一個十六進(jìn)制的數(shù)字。例如:337c7f2b-7a34-4f50-9141-bab9e6478cc8 即為有效的 GUID 值。

3. 世界上(Koffer注:應(yīng)該是地球上)的任何兩臺計(jì)算機(jī)都不會生成重復(fù)的 GUID 值。GUID 主要用于在擁有多個節(jié)點(diǎn)、多臺計(jì)算機(jī)的網(wǎng)絡(luò)或系統(tǒng)中,分配必須具有唯一性的標(biāo)識符。

4. 在 Windows 平臺上,GUID 應(yīng)用非常廣泛:注冊表、類及接口標(biāo)識、數(shù)據(jù)庫、甚至自動生成的機(jī)器名、目錄名等。

 

.NET中使用GUID

GUID 在 .NET 中使用非常廣泛,而且 .NET Framework 提供了專門 Guid 基礎(chǔ)結(jié)構(gòu)。
Guid 結(jié)構(gòu)的常用法包括:
1) Guid.NewGUID() 
生成一個新的 GUID 唯一值
2) Guid.ToString()
將 GUID 值轉(zhuǎn)換成字符串,便于處理
3)構(gòu)造函數(shù) Guid(string) 
由 string 生成 Guid 結(jié)構(gòu),其中string 可以為大寫,也可以為小寫,可以包含兩端的定界符“{}”或“()”,甚至可以省略中間的“-”,Guid 結(jié)構(gòu)的構(gòu)造函數(shù)有很多,其它構(gòu)造用法并不常用。

.NET Framework 中可以使用類 GuidConverter 提供將 Guid 結(jié)構(gòu)與各種其他表示形式相互轉(zhuǎn)換的類型轉(zhuǎn)換器。

 

在C#中生成一個GUID

處理一個唯一標(biāo)識符使得存儲和獲得信息變得更加容易。在處理一個數(shù)據(jù)庫中這一功能變得尤其有用,因?yàn)橐粋€GUID能夠操作一個主鍵。

同樣,SQL Server也很好地集成了GUID的用途。SQL Server數(shù)據(jù)類型uniqueidentifier能夠存儲一個GUID數(shù)值。你可以通過使用NEWID()函數(shù)在SQL Server中生成這一數(shù)值,或者可以在SQL Server之外生成GUID,然后再手動地插入這一數(shù)值。

在.NET中,后面一種方法顯得更加直接。.NET Framework中的基本System類包括GUID數(shù)值類型。除此之外,這一數(shù)值類型包含了處理GUID數(shù)值的方法。特別地,NewGUID方法允許你很容易地生成一個新的GUID。

 

 


 1using System; 
 2namespace DisplayGUID
 3{
 4    class PRogram
 5    {
 6        static void Main(string[] args)
 7        {
 8            GenerateGUID();
 9        }
10        static void GenerateGUID()
11        {
12            Console.WriteLine("GUID:" + System.Guid.NewGuid().ToString());
13        }
14    }
15}

 

下面為這一程序的輸出:(雖然不同系統(tǒng)之間的GUID是變化的。)

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

以上范例使用到System.Guid空間名稱的NewGuid函數(shù)來返回一個數(shù)值。在這一點(diǎn)上,你可以看到GUID是一個很好的功能,但在程序的什么地方使用到它們,并如何使用它們?

 

在程序中使用一個GUID

一個GUID可以在后臺數(shù)據(jù)庫中操作一個主鍵。以下代碼使用一個GUID在一個后臺數(shù)據(jù)庫中存儲信息,這一數(shù)據(jù)庫包含以下的列:

pk_guid  —uniqueidentifier  數(shù)據(jù)類型 
name      —nvarchar  數(shù)據(jù)類型 
這樣出現(xiàn)一個包含文本框的簡單Windows窗體。當(dāng)選擇按鈕時,文本框中的數(shù)據(jù)被插入到數(shù)據(jù)庫中name列。通過程序代碼可以生成一個GUID并存儲在pk_guid列中:

 


 1using System;
 2using System.Collections.Generic;
 3using System.ComponentModel;
 4using System.Data;
 5using System.Drawing;
 6using System.Linq;
 7using System.Text;
 8using System.Windows.Forms;
 9using System.Data.SqlClient;
10
11namespace GuidSqlDBExample
12{
13    public partial class Form1 : Form
14    {
15        public Form1()
16        {
17            InitializeComponent();
18        }
19
20        private void btnInsert_Click(object sender, EventArgs e)
21        {
22            string _str = "server=(local);Initial Catalog=TestGuid;Integrated Security=SSPI";
23            using (SqlConnection conn = new SqlConnection(_str))
24            {
25                try
26                {
27                    string _sqlInsert = "INSERT INTO dbo.Guid(pk_guid, name) VALUES ('"+ System.Guid.NewGuid().ToString() + "', '" + txtName.Text + "')";
28                    conn.Open();
29                    SqlCommand _cmd = new SqlCommand(_sqlInsert, conn);
30                    _cmd.ExecuteNonQuery();   
31                }
32                catch (Exception ex)
33                {
34                    System.Console.Write("Error: " + ex.Message);
35                }
36            }
37        }
38    }
39
40}

 

 


另一個GUID程序?qū)⒁粋€唯一的標(biāo)識符分配給一個.NET類或者接口,也就是說,GUID作為一個屬性被分配給類或者接口。可以使用標(biāo)準(zhǔn)屬性語法來實(shí)現(xiàn)這一過程: 本

我們可以擴(kuò)展第一個范例來分配一個GUID。System.Runtime.InteropServices空間名稱必須被引用來使用GUID屬性。以下C#代碼實(shí)現(xiàn)了這一過程:

 

 


 1using System;
 2using System.Collections.Generic;
 3using System.Linq;
 4using System.Text;
 5using System.Runtime.InteropServices; 
 6
 7namespace GuidTest
 8{
 9    [Guid("9245fe4a-d402-451c-b9ed-9c1a04247482")] 
10    class Program
11    {
12        static void Main(string[] args)
13        {
14            GenerateGUID();
15        }
16        static void GenerateGUID()
17        {
18            Console.WriteLine("GUID:" + System.Guid.NewGuid().ToString());
19        }
20    }
21}

 


GUID永遠(yuǎn)是方便的
對于程序開發(fā)的各個方面,.NET Framework簡化了建立和處理GUID數(shù)值的過程。在.NET程序需要的地方,這一功能很容易地生成唯一的數(shù)值。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 安陆市| 杭锦旗| 宜城市| 阿拉善右旗| 清流县| 大英县| 洛扎县| 武胜县| 水城县| 孝感市| 清流县| 邮箱| 若羌县| 芮城县| 屏东市| 固安县| 攀枝花市| 三门县| 景谷| 北碚区| 响水县| 华池县| 安乡县| 乌拉特前旗| 星座| 舒兰市| 兰考县| 富民县| 蒲城县| 山阳县| 封开县| 车险| 赫章县| 德化县| 阿城市| 泊头市| 叶城县| 同江市| 苍梧县| 无极县| 抚顺县|