王仁勝 閆艾敏
(安徽埃夫特智能裝備有很公司,安徽 蕪湖 241007)
ADO是微軟公司為數據庫開發提供的強大的使用應用程序層接口.并且是當前微軟支持的數據庫進行操作的最有效和最簡單直接的方法.它是面向對象的編程接口.包含三個基本接口::_ ConnectionPtr接口、_CommandPtr接口和_RecordsetPtr接口.使用之前需要引入ADO庫文件和初始化OLE/COM庫環境.
1.引入ADO庫文件
使用ADO前必須在工程的stdafx. h頭文件里用直接引入符號#import引入ADO庫文件
以使編譯器能正確編譯,代碼如下所示:
用#import引入ADO庫文件
#i m p o r t“c:p r o g r a m f i l e s commonfilessystemadomsado15.dll”no_ namespacesrename(“EOF”adoEOF”)
這行語句聲明在工程中使用ADO,但不使用ADO的名字空間,并且為了避免常數沖突,將常數EOF改名為adoEOF。現在不需添加另外的頭文件,就可以使用ADO接口了。

圖1 :中英文切換數據表

圖2 :IO映射表
2.初始化OLE/ COM庫環境
ADO庫是一組COM動態庫,因此應用程序在調用ADO前,必須初始化OLE/COM庫環境。
::CoInitialize(NULL);
3.采用ADO接口智能指針
ADO庫包含三個基本接口:_ ConnectionPtr接口、_CommandPtr接口和_RecordsetPtr接口。
_ConnectionPtr接口返回一個記錄集或一個空指針。通常使用它來創建一個數據連接或執行一條不返回任何結果的SQL語句,如一個存儲過程。對于要返回記錄的操作通常用_RecordserPtr來實現。_CommandPtr接口返回一個記錄集。它提供了一種簡單的方法來執行返回記錄集的存儲過程和SQL語句。
_RecordsetPtr是一個記錄集對象。與以上兩種對象相比,它對記錄集提供了更多的控制功能,如記錄鎖定,游標控制等。同_CommandPtr接口一樣,它不一定要使用一個已經創建的數據連接,可以用一個連接串代替連接指針賦給_ RecordsetPtr的connection成員變量,讓它自己創建數據連接。
SQL關系數據庫是當今網絡編程中使用的比較多的一個數據庫系統.SQL是英文StructuredQueryLanguage的簡稱,中文名是結構化查詢語言,是進行數據庫操作的標準語言。SQL語言的主要功能就是同各種數據庫建立聯系,進行溝通。按照ANSI(美國國家標準協會)的規定,SQL被作為關系型數據庫管理系統的標準語言。SQL語言可以用來執行各種各樣的操作,例如更新數據庫中的數據,從數據庫中提取數據等。目前,絕大多數流行的關系型數據庫管理系統等都采用了SQL語言標準。QH165奇瑞自主研發的點焊機器人就采用access作為數據庫,采用SQL關系數據庫語言對其進行數據的訪問和操作,包括對數據的添加,更新,修改,刪除等。

圖3 :報警內容表
數據庫記錄添加:
Sql=”insertinto數據表(字段1,字段2,字段3...)values(值1,值2,值3...)”
Sql=”insertinto目 標 數 據 表select*from源數據表”(把源數據表的記錄添加到目標數據表)
數據庫記錄修改:
Sql=”update數據表set字段名=字段值where條件表達式”
Sql=”update數據表set字段1=值1,字段2=值2...字段n=值nwhere條件表達式”
數據庫記錄刪除:

圖4 :主程序表

圖6 :數據程序表
Sql=”deletefrom數據表where條件表達式”
Sql=”deletefrom數據表”(將數據表所有記錄刪除)
基于以上的基礎開發了QH165點焊機器人的數據庫程序.
機器人數據庫程序采用access作為數據庫,數據庫源程序分為示教程序和點位置保存程序。比如一個命為2H01的表名,存貯著示教運動指令程序,其對應著一個2H01Data的點存貯程序,保存著各個點的位置或關節值.
數據庫表保存在相對路徑為data\ data.mdb和data\sysuser.mdb中.
1.判斷表名是否存在,格式是否正確
首先在數據庫表中查找是否存在這兩個表,用到MFC中的CFileFind類的FindFile方法.如:
BOOLbworking=finder1.FindFile(“data\sysuser.mdb”);
BOOLbfinding=finder2.FindFile(“data\data.mdb”);
通過BOOL類型的兩個變量的返回值來進行判斷表名是否存在.
2.數據庫中表組成
data.mdb數據表中有語言轉換的數據表languageNum,存貯機器人報警內容和時間數據表warning,外部IO輸入輸出表IO,文件名表FileName,坐標系表Coordinate,主程序表和存貯數據點位置表,與機器人相關的數據都存貯在各自的數據表中.(如下圖圖1、圖2):
3.數據表的操作
每一個數據表都涉及到創建,增加/刪除行,刪除表,修改表的操作,以主程序表為例進行詳細介紹
數據表的創建:
數據表的創建涉及到SQL關系數據語句.CREATETABLE
首先采用ADO接口連接數據庫,創建ADO庫中的接口對象實例m_ pConnection2,
m_pRecordset2.打開數據庫,將SQL語句格式化的執行創建數據表,然后在表中創建列.并采用try()catch()的方式來捕獲異常.

圖7 創建表程序

圖8 復制表程序

圖9 數據表刪除
數據表復制:
通過SQL語句的格式化操作來執行,SQL語句為Select*into*from*(如圖)
數據表刪除
在數據庫開發中,采用ADO接口技術與SQL語句結合對數據的操作在IT領域方面已經非常常見.通過這種方法數據結構清晰,結構簡單,操作方便,效率也非常高.而本文則是將此方法應用于機器人的開發技術中.因此讀者可以以此為鑒將其應用于其它相關行業.
注:國家863項目基金:國家863新型重載工業點焊機器人及自動化裝備開發
[1]候俊杰深入淺出MFC[M]華中理工出版社2002
[2]陳克力SQLServer2005編程[M].清華大學出版社2008