1.4 公共類設(shè)計
在開發(fā)項目中以類的形式來組織、封裝一些常用的方法和事件,不僅可以提高代碼的重用率,也大大方便了代碼的管理。本系統(tǒng)中創(chuàng)建了5個公共類,分別為DataCon類、DataOperate類、SoftReg類、VideoOperate類和PelcoD類。其中,DataCon類用來訪問Microsoft Access 2003數(shù)據(jù)庫,DataOperate類用來操作Microsoft Access 2003數(shù)據(jù)庫,SoftReg類用來實現(xiàn)生成機器碼和系統(tǒng)注冊功能,VideoOperate用來封裝視頻采集卡中的各種枚舉和API函數(shù),PelcoD類用來實現(xiàn)Pelco-D協(xié)議。在程序開發(fā)時,窗體只需調(diào)用相應(yīng)的方法即可。下面分別對這5個類中的方法進行詳細介紹。
1.4.1 DataCon類
DataCon類中,因為本系統(tǒng)使用的是Microsoft Access 2003數(shù)據(jù)庫,所以在命名空間區(qū)域內(nèi)引用using System.Data.OleDb來連接數(shù)據(jù)庫。該類中定義了一個getCon()方法,該方法用來使用OleDbConnection對象連接Access數(shù)據(jù)庫。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:用來連接OLEDB數(shù)據(jù)源。
1.4.2 DataOperate類
DataOperate類中,首先實例化datacon、oledbcon、oledbcom、oledbda和ds 5個對象。其中,datacon對象用來調(diào)用自定義類DataCon類中的方法,oledbcon對象用來連接Access數(shù)據(jù)庫,oledbcom對象用來執(zhí)行Command命令語句,oledbda對象表示用于填充DataSet數(shù)據(jù)集和更新Access數(shù)據(jù)庫的一組數(shù)據(jù)命令和一個數(shù)據(jù)庫連接,ds對象為數(shù)據(jù)集。實例化datacon、oledbcon、oledbcom、oledbda和ds這5個對象的關(guān)鍵代碼如下:
例程02 代碼位置:光盤\TM\01\VWMS\VWMS\CommonClass\DataOperate.cs
DataCon datacon = new DataCon(); //實例化DataCon類對象
OleDbConnection oledbcon; //實例化OleDbConnection類對象,用來連接Access數(shù)據(jù)庫
OleDbCommand oledbcom; //實例化OleDbCommand類對象,用來執(zhí)行SQL語句
OleDbDataAdapter oledbda; //實例化OleDbDataAdapter類對象,用來執(zhí)行SQL語句,并記錄結(jié)果集
DataSet ds; //DataSet數(shù)據(jù)集
DataOperate類中自定義了getCom()和getDs()兩個方法,下面分別對它們進行介紹。
1.getCom()方法
getCom()方法為無返回值類型的自定義方法,主要用來執(zhí)行SQL語句,關(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:該方法用來打開數(shù)據(jù)庫連接。
ExecuteNonQuery:執(zhí)行Command命令。
Close:該方法用來關(guān)閉數(shù)據(jù)庫連接。
2.getDs()方法
getDs()方法用來執(zhí)行SQL語句,并返回一個DataSet類型的數(shù)據(jù)集對象。此方法中,首先調(diào)用DataCon類中的getCon ()方法實現(xiàn)Access數(shù)據(jù)庫連接,然后使用OleDbDataAdapter類對象填充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ù)庫連接
oledbda = new OleDbDataAdapter(strCon, oledbcon); //實例化OleDbDataAdapter對象
ds = new DataSet(); //實例化DataSet對象
oledbda.Fill(ds, tbname); //填充DataSet數(shù)據(jù)集
return ds;
}
1.4.3 SoftReg類
SoftReg類中自定義了GetDiskVolumeSerialNumber()、getCpu()、getMNum()和getRNum() 4個方法,下面分別對它們進行介紹。
1.GetDiskVolumeSerialNumber()方法
GetDiskVolumeSerialNumber()方法用來使用ManagementObject對象的GetPropertyValue()方法獲得本機的硬盤標識號,其實現(xiàn)代碼如下:
例程05 代碼位置:光盤\TM\01\VWMS\VWMS\CommonClass\SoftReg.cs
//取得設(shè)備硬盤的卷標號
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)管理類,它是一個WMI類,通過該類的成員,可以使用特定的WMI類路徑訪問WMI數(shù)據(jù)。
ManagementObject:表示W(wǎng)MI實例。
GetPropertyValue():該方法用來獲取某屬性值的等效訪問器。
2.getCpu()方法
getCpu()方法用來獲得本機的CPU序列號,其實現(xiàn)代碼如下:
例程06 代碼位置:光盤\TM\01\VWMS\VWMS\CommonClass\SoftReg.cs
//獲得CPU的序列號
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序列號
break;
}
return strCpu;
}