1.4 公共类设计
在开发项目中以类的形式来组织、封装一些常用的方法和事件,不仅可以提高代码的重用率,也大大方便了代码的管理。本系统中创建了5个公共类,分别为DataCon类、DataOperate类、SoftReg类、VideoOperate类和PelcoD类。其中,DataCon类用来访问Microsoft Access 2003数据库,DataOperate类用来操作Microsoft Access 2003数据库,SoftReg类用来实现生成机器码和系统注册功能,VideoOperate用来封装视频采集卡中的各种枚举和API函数,PelcoD类用来实现Pelco-D协议。在程序开发时,窗体只需调用相应的方法即可。下面分别对这5个类中的方法进行详细介绍。
1.4.1 DataCon类
DataCon类中,因为本系统使用的是Microsoft Access 2003数据库,所以在命名空间区域内引用using System.Data.OleDb来连接数据库。该类中定义了一个getCon()方法,该方法用来使用OleDbConnection对象连接Access数据库。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数据源。
1.4.2 DataOperate类
DataOperate类中,首先实例化datacon、oledbcon、oledbcom、oledbda和ds 5个对象。其中,datacon对象用来调用自定义类DataCon类中的方法,oledbcon对象用来连接Access数据库,oledbcom对象用来执行Command命令语句,oledbda对象表示用于填充DataSet数据集和更新Access数据库的一组数据命令和一个数据库连接,ds对象为数据集。实例化datacon、oledbcon、oledbcom、oledbda和ds这5个对象的关键代码如下:
例程02 代码位置:光盘\TM\01\VWMS\VWMS\CommonClass\DataOperate.cs
DataCon datacon = new DataCon(); //实例化DataCon类对象
OleDbConnection oledbcon; //实例化OleDbConnection类对象,用来连接Access数据库
OleDbCommand oledbcom; //实例化OleDbCommand类对象,用来执行SQL语句
OleDbDataAdapter oledbda; //实例化OleDbDataAdapter类对象,用来执行SQL语句,并记录结果集
DataSet ds; //DataSet数据集
DataOperate类中自定义了getCom()和getDs()两个方法,下面分别对它们进行介绍。
1.getCom()方法
getCom()方法为无返回值类型的自定义方法,主要用来执行SQL语句,关键代码如下:
例程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:该方法用来打开数据库连接。
ExecuteNonQuery:执行Command命令。
Close:该方法用来关闭数据库连接。
2.getDs()方法
getDs()方法用来执行SQL语句,并返回一个DataSet类型的数据集对象。此方法中,首先调用DataCon类中的getCon ()方法实现Access数据库连接,然后使用OleDbDataAdapter类对象填充DataSet数据集。关键代码如下:
例程04 代码位置:光盘\TM\01\VWMS\VWMS\CommonClass\DataOperate.cs
public DataSet getDs(string strCon,string tbname)
{
oledbcon = datacon.getCon(); //获得数据库连接
oledbda = new OleDbDataAdapter(strCon, oledbcon); //实例化OleDbDataAdapter对象
ds = new DataSet(); //实例化DataSet对象
oledbda.Fill(ds, tbname); //填充DataSet数据集
return ds;
}
1.4.3 SoftReg类
SoftReg类中自定义了GetDiskVolumeSerialNumber()、getCpu()、getMNum()和getRNum() 4个方法,下面分别对它们进行介绍。
1.GetDiskVolumeSerialNumber()方法
GetDiskVolumeSerialNumber()方法用来使用ManagementObject对象的GetPropertyValue()方法获得本机的硬盘标识号,其实现代码如下:
例程05 代码位置:光盘\TM\01\VWMS\VWMS\CommonClass\SoftReg.cs
//取得设备硬盘的卷标号
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数据。
ManagementObject:表示WMI实例。
GetPropertyValue():该方法用来获取某属性值的等效访问器。
2.getCpu()方法
getCpu()方法用来获得本机的CPU序列号,其实现代码如下:
例程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;
}