家庭视频监控系统(6)

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;

}

读书导航