《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 基于ADO数据库访问技术的塔吊安全监控应用
基于ADO数据库访问技术的塔吊安全监控应用
2014年微型机与应用第19期
唐 姣,宋茂忠
南京航空航天大学 电子信息工程学院,江苏 南京 210016
摘要: 提出了一种数据库管理方法来对使用的塔吊进行管理监控,包括塔吊的使用人员、使用时间以及塔吊使用中的实时参数状态等信息,结合远程网络通信来实现远程监控塔吊的安全使用情况。采用MFC编程,使用SQL Server 2005作为数据库服务后台,通过基于C++的控件数据对象(ADO)数据库访问技术来实现对数据库的读写等操作,最终实现塔吊的远程安全监控管理功能。
Abstract:
Key words :

  摘 要: 提出了一种数据库管理方法来对使用的塔吊进行管理监控,包括塔吊的使用人员、使用时间以及塔吊使用中的实时参数状态等信息,结合远程网络通信来实现远程监控塔吊的安全使用情况。采用MFC编程,使用SQL Server 2005作为数据库服务后台,通过基于C++的控件数据对象(ADO)数据库访问技术来实现对数据库的读写等操作,最终实现塔吊的远程安全监控管理功能。

  关键词: 控件数据对象(ADO); C++;数据库; MFC

0 引言

  近年来随着建筑业的迅速发展,工地施工随处可见,作为施工重要工具的塔吊,使用量也迅猛增加,塔吊的安全施工成为重点关注问题之一,各企业对于塔吊的安全使用也相当重视。针对该问题,结合物联网技术、网络通信技术以及数据库技术,提出了一套塔吊安全监控系统的设计方案,实现远程对工地塔吊的运行状态、使用情况进行监督和管理,加强塔吊的安全使用。

  整个系统分为3个模块:工地塔吊群的实时参数采集与数据共享模块、塔吊群与服务器端之间的远程网络数据传输模块以及服务器端对数据库的访问与操作模块。本文主要介绍系统中的数据库功能模块,该模块采用MFC编程,基于Visual Studio 2005,以SQL Server 2005为数据库服务后台,采用ADO数据库访问技术来实现塔吊数据的存取等操作,有效地解决塔吊大量数据管理问题。

1 系统方案分析与设计

  该数据库模块功能是实现在局域网内访问数据库,将塔吊数据(包括塔吊的基本信息、使用人员、使用时间以及塔吊使用中的实时参数状态等信息)写入存储到数据库中去。它主要分为两部分:基于Windows Server 2003平台的应用程序以及数据库服务器的数据库创建与管理,其中服务器端应用程序负责塔吊数据的实时接收和上传到数据库中。模块结构如图1所示。

001.jpg

  1.1 数据库应用

  数据库技术的核心思想是数据的独立与共享,所以开发数据库应用,就是利用计算机数据库技术来组织、管理和使用信息。目前,在世界范围内得到主流应用的还是经典的关系数据库系统,比较知名的商用系统有Sybase、Oracle、Informix、SQL Server等,基于Windows系统平台的数据库系统及信息系统应用开发中比较流行的开发工具有DelPhi、VB、VC/VC++等数种,其中VC++是Microsoft 公司开发的程序设计语言,该语言功能强大、代码简洁、可移植性强,同时 VC 支持多种数据库访问接口。综合考虑下,本文选择Visual Studio 2005编程环境下采用C++语言的方式,并选取SQL Server 2005作为数据库服务后台,创建并管理存储塔吊信息的数据库。

  1.2 数据库访问技术

  随着信息技术的发展,数据库应用技术得到了空前的发展,其中数据库访问技术成为数据库应用中的重要环节。微软提出了多种数据库访问技术,如ODBC、DAO、OLE DB、ADO等。开放数据库互联(Open Database Connectivity,ODBC)是微软 引进的一种早期数据库接口技术,但其访问速度慢,不适用于对象数据库;数据访问对象(Data Access Objects,DAO) 是微软第一个面向对象的数据库接口,但其对 SQL 等非 MDB数据库的执行效率较低;对象链接与嵌入数据库(Object Link and Embed Database,OLE DB) 是微软的战略性的通向不同数据源的低级应用程序接口,但它使用时需加入很多代码,使用起来比较复杂[1];控件数据对象(ActiveX Data Objects,ADO)是独立于开发工具和开发语言的数据接口,它具有功能强、通用性好、效率高、占用空间少等特点。随着数据库访问技术的不断发展,对数据库的访问多采用ADO对象模型,ADO将成为数据库访问技术的主流[2]。本文系统中服务器端的应用程序采用ADO数据库访问技术来对数据库进行连接以及读写等操作。

  ADO中有以下3个核心对象:

  (1)Connection对象

  Connection对象表示到数据库的连接,它管理应用程序和数据库之间的通信。下面将介绍的Recordset对象和Command对象都有一个ActiveConnection属性,该属性用来引用Connection对象。

  (2)Command对象

  Command对象用来处理重复执行的查询,或处理需要检查在存储过程调用中的输出或者返回参数的值的查询。

  (3)Recordset对象

  Recordset对象用来获取数据。Recordset对象存放查询的结果,这些结果由数据的行和列组成。每一列都存放在Recordset的Fields集合中的一个Field对象中[3]。

2 系统方案实现

  2.1 数据库的创建与设置

  针对塔吊群的监控内容,创建命名为CraneInfo的数据库,在该数据库下创建了3个表结构,以方便对塔吊信息进行分类管理,分别为:表baseinfo,塔吊的基本信息,即塔吊的臂长、起重力、安全吊重、力矩等参数;表realinfo,塔吊的实时运行信息,即塔吊的转角、倾斜角、风速、报警等参数;表userinfo,塔吊的使用信息,即塔吊的使用人员、运行起始时间、运行时间等参数。建立的3个表结构如图2~图4所示,其中ID为结构表自增id,与塔吊ID参数同时设置不允许为空。

002.jpg


  基于SQL Server 2005的数据库,通过对配置管理进行设置,并设置登录用户账号和密码,保护数据库的安全访问。采用ADO技术连接数据库时,通过设置对应的数据库信息来实现。

  2.2 服务器端程序实现

  2.2.1 总体设计

  该系统中服务器端应用程序采用了多线程技术,线程1实现远程通信模块接收实时塔吊数据并将其保存在缓冲区中,线程2实现该数据库模块从缓冲区读取塔吊数据并上传到数据库。实现过程是:首先通过设置数据库进行数据库连接,然后再对数据库进行访问等操作。该应用程序端大致流程如图5所示。服务器端应用程序数据库连接界面如图6所示。

  2.2.2 基于ADO技术的代码实现

  C++中利用ADO访问数据库的步骤如下:

  (1)导入ADO库,即在预编译头文件stdafx.h中导入该库,方法是利用import指令将此动态链接库导入,代码如下:

  #import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename ("EOF", "rsEOF")

  然后在类的构造函数和析构函数中初始化数据库和释放数据库连接。

  CoInitialize(NULL); //初始化

  CoUninitialize(); //释放

  (2)设置数据库连接信息,使用连接指针连接数据库。

  _ConnectionPtr m_pConnection; //连接指针定义

  m_pConnection.CreateInstance(__uuidof(Connection));

  m_strConnect = _T("Provider=SQLOLEDB;Network Library=DBMSSOCN;Data Source=") + m_infoDbSettings.strIp + _T("; Initial Catalog=") + m_infoDbSettings.strDatabaseName + _T("; User ID=") + m_infoDbSettings.strUserName + _T("; PWD=") + m_infoDbSettings.strPassword;

  m_pConnection->Open(_bstr_t(LPCTSTR(m_strConnect)), "", "", adModeUnknown) //连接数据库

  (3)数据库连接成功后,就可以对数据库进行读写操作。访问数据库时,针对3个不同的表结构,程序实现中定义了3个类,分别对3个表结构进行读写等操作。对于表结构baseinfo和userinfo两个静态数据,连接数据库后,创建记录集对象,通过查看记录集,判定塔吊数据是否存在,若存在则更新数据,若不存在则插入数据;对于表结构realinfo动态数据,连接数据库后,采用定时机制,将塔吊实时运行数据上传到数据库中。

  _RecordsetPtr m_pRecordset; //记录指针定义

  m_pRecordset.CreateInstance(__uuidof(Recordset);

  strCommand.Format(_T("SELECT * FROM baseinfo WHERE craneID=%d;"), CraneId);

  m_pRecordset->Open(_bstr_t(LPCTSTR(strCommand)),

  _variant_t((IDispatch*)pConnection, true),

  adOpenStatic,

  adLockOptimistic,

  adCmdText);//打开记录集查找塔吊ID是否存在

  通过查看返回值进行静态数据上传,若存在则更新塔吊数据,若不存在则插入塔吊数据,最终实现塔吊数据上传到数据库的功能。

  塔吊数据成功上传到数据库中后,可以通过数据库读操作,读取第三方监控需要的信息,更方便直观地查看塔吊状态。整个系统在应用中,稳定准确,能够很好地实现塔吊远程监控功能。

3 结论

  在Visual Studio 2005 C++中采用ADO数据库访问技术,可以快速并方便地实现对数据库的访问操作。将数据库技术应用于塔吊监控系统中,可以有效解决大数据存储问题,同时更方便实现第三方的远程监控功能,而不局限于工地上监控。在日益信息化、网络化、数据化的时代,将数据库技术与嵌入式技术、网络技术等其他技术相结合是未来的发展趋势。

参考文献

  [1] 杨柯,孔繁虹.基于ADO技术在城市轨道交通管理系统中的应用[J].城市道桥与防洪,2012,3(3):186-188.

  [2] 王祥瑞,黄国华.ADO数据库访问技术[J]. 长春大学学报(自然科学版),2010,20(1):62-63.

  [3] 孙鑫,余安萍. VC 深入详解[M]. 北京:电子工业出版社,2006.


此内容为AET网站原创,未经授权禁止转载。