正文

家庭視頻監(jiān)控系統(tǒng)(6)

C#項(xiàng)目開(kāi)發(fā)案例全程實(shí)錄(第2版) 作者:明日科技


1.4 公共類設(shè)計(jì)

在開(kāi)發(fā)項(xiàng)目中以類的形式來(lái)組織、封裝一些常用的方法和事件,不僅可以提高代碼的重用率,也大大方便了代碼的管理。本系統(tǒng)中創(chuàng)建了5個(gè)公共類,分別為DataCon類、DataOperate類、SoftReg類、VideoOperate類和PelcoD類。其中,DataCon類用來(lái)訪問(wèn)Microsoft Access 2003數(shù)據(jù)庫(kù),DataOperate類用來(lái)操作Microsoft Access 2003數(shù)據(jù)庫(kù),SoftReg類用來(lái)實(shí)現(xiàn)生成機(jī)器碼和系統(tǒng)注冊(cè)功能,VideoOperate用來(lái)封裝視頻采集卡中的各種枚舉和API函數(shù),PelcoD類用來(lái)實(shí)現(xiàn)Pelco-D協(xié)議。在程序開(kāi)發(fā)時(shí),窗體只需調(diào)用相應(yīng)的方法即可。下面分別對(duì)這5個(gè)類中的方法進(jìn)行詳細(xì)介紹。

1.4.1 DataCon類

DataCon類中,因?yàn)楸鞠到y(tǒng)使用的是Microsoft Access 2003數(shù)據(jù)庫(kù),所以在命名空間區(qū)域內(nèi)引用using System.Data.OleDb來(lái)連接數(shù)據(jù)庫(kù)。該類中定義了一個(gè)getCon()方法,該方法用來(lái)使用OleDbConnection對(duì)象連接Access數(shù)據(jù)庫(kù)。GetCon()方法的主要代碼如下:

例程01 代碼位置:光盤\TM\01\VWMS\VWMS\CommonClass\DataCon.cs

public OleDbConnection getCon()

{

string strDPath = Application.StartupPath;

string strDataSource = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="

+ strDPath.Substring(0, strDPath.LastIndexOf("\\")).Substring(0, strDPath.Substring(0, strDPath. LastIndexOf("\\")).LastIndexOf("\\")) + "\\DataBase\\db_VWMS.mdb";

OleDbConnection oledbCon = new OleDbConnection(strDataSource);

return oledbCon;

}

代碼貼士

OleDbConnection:用來(lái)連接OLEDB數(shù)據(jù)源。

1.4.2 DataOperate類

DataOperate類中,首先實(shí)例化datacon、oledbcon、oledbcom、oledbda和ds 5個(gè)對(duì)象。其中,datacon對(duì)象用來(lái)調(diào)用自定義類DataCon類中的方法,oledbcon對(duì)象用來(lái)連接Access數(shù)據(jù)庫(kù),oledbcom對(duì)象用來(lái)執(zhí)行Command命令語(yǔ)句,oledbda對(duì)象表示用于填充DataSet數(shù)據(jù)集和更新Access數(shù)據(jù)庫(kù)的一組數(shù)據(jù)命令和一個(gè)數(shù)據(jù)庫(kù)連接,ds對(duì)象為數(shù)據(jù)集。實(shí)例化datacon、oledbcon、oledbcom、oledbda和ds這5個(gè)對(duì)象的關(guān)鍵代碼如下:

例程02 代碼位置:光盤\TM\01\VWMS\VWMS\CommonClass\DataOperate.cs

DataCon datacon = new DataCon(); //實(shí)例化DataCon類對(duì)象

OleDbConnection oledbcon;  //實(shí)例化OleDbConnection類對(duì)象,用來(lái)連接Access數(shù)據(jù)庫(kù)

OleDbCommand oledbcom; //實(shí)例化OleDbCommand類對(duì)象,用來(lái)執(zhí)行SQL語(yǔ)句

OleDbDataAdapter oledbda;   //實(shí)例化OleDbDataAdapter類對(duì)象,用來(lái)執(zhí)行SQL語(yǔ)句,并記錄結(jié)果集

DataSet ds; //DataSet數(shù)據(jù)集

DataOperate類中自定義了getCom()和getDs()兩個(gè)方法,下面分別對(duì)它們進(jìn)行介紹。

1.getCom()方法

getCom()方法為無(wú)返回值類型的自定義方法,主要用來(lái)執(zhí)行SQL語(yǔ)句,關(guān)鍵代碼如下:

例程03 代碼位置:光盤\TM\01\VWMS\VWMS\CommonClass\DataOperate.cs

public void getCom(string strCon)

{

oledbcon = datacon.getCon();

oledbcom = new OleDbCommand(strCon, oledbcon);

oledbcon.Open();

oledbcom.ExecuteNonQuery();

oledbcon.Close();

}

代碼貼士

Open:該方法用來(lái)打開(kāi)數(shù)據(jù)庫(kù)連接。

ExecuteNonQuery:執(zhí)行Command命令。

Close:該方法用來(lái)關(guān)閉數(shù)據(jù)庫(kù)連接。

2.getDs()方法

getDs()方法用來(lái)執(zhí)行SQL語(yǔ)句,并返回一個(gè)DataSet類型的數(shù)據(jù)集對(duì)象。此方法中,首先調(diào)用DataCon類中的getCon ()方法實(shí)現(xiàn)Access數(shù)據(jù)庫(kù)連接,然后使用OleDbDataAdapter類對(duì)象填充DataSet數(shù)據(jù)集。關(guān)鍵代碼如下:

例程04 代碼位置:光盤\TM\01\VWMS\VWMS\CommonClass\DataOperate.cs

public DataSet getDs(string strCon,string tbname)

{

oledbcon = datacon.getCon();   //獲得數(shù)據(jù)庫(kù)連接

oledbda = new OleDbDataAdapter(strCon, oledbcon); //實(shí)例化OleDbDataAdapter對(duì)象

ds = new DataSet(); //實(shí)例化DataSet對(duì)象

oledbda.Fill(ds, tbname); //填充DataSet數(shù)據(jù)集

return ds;

}

1.4.3 SoftReg類

SoftReg類中自定義了GetDiskVolumeSerialNumber()、getCpu()、getMNum()和getRNum() 4個(gè)方法,下面分別對(duì)它們進(jìn)行介紹。

1.GetDiskVolumeSerialNumber()方法

GetDiskVolumeSerialNumber()方法用來(lái)使用ManagementObject對(duì)象的GetPropertyValue()方法獲得本機(jī)的硬盤標(biāo)識(shí)號(hào),其實(shí)現(xiàn)代碼如下:

例程05 代碼位置:光盤\TM\01\VWMS\VWMS\CommonClass\SoftReg.cs

//取得設(shè)備硬盤的卷標(biāo)號(hào)

public string GetDiskVolumeSerialNumber()

{

ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");

ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid=\"d:\"");

disk.Get();

return disk.GetPropertyValue("VolumeSerialNumber").ToString();

}

代碼貼士

ManagementClass:公共信息模型(CIM)管理類,它是一個(gè)WMI類,通過(guò)該類的成員,可以使用特定的WMI類路徑訪問(wèn)WMI數(shù)據(jù)。

ManagementObject:表示W(wǎng)MI實(shí)例。

GetPropertyValue():該方法用來(lái)獲取某屬性值的等效訪問(wèn)器。

2.getCpu()方法

getCpu()方法用來(lái)獲得本機(jī)的CPU序列號(hào),其實(shí)現(xiàn)代碼如下:

例程06 代碼位置:光盤\TM\01\VWMS\VWMS\CommonClass\SoftReg.cs

//獲得CPU的序列號(hào)

public string getCpu()

{

string strCpu = null;

ManagementClass myCpu = new ManagementClass("win32_Processor"); //指定win32_Processor管理類

ManagementObjectCollection myCpuConnection = myCpu.GetInstances();

foreach (ManagementObject myObject in myCpuConnection)

{

strCpu = myObject.Properties["Processorid"].Value.ToString(); //獲得CPU序列號(hào)

break;

}

return strCpu;

}


上一章目錄下一章

Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)