技術頻道

      Labview中遠程數據庫訪問技術

      摘 要:介紹了在Labview中應用ADO技術訪問本地和遠程數據庫的方案。對在局域網中以網絡共享方式訪問遠程Access數據庫進行了詳細介紹,最后給出了應用該方法開發的一個實例。

      關鍵詞:Labview ADO 遠程數據庫

      引言

        Labview 是美國NI公司開發的一種圖形化編程語言,其主要用于數據采集、儀器控制、過程監控等領域。Labview具有豐富的采集與分析函數庫,在Labview環境下可以方便快捷地開發監控系統軟件。現代監控系統一般構建于局域網內,且監控系統自身也是企業生產管理系統的一個子系統,因此不可避免地要訪問本地或遠程數據庫。Labview開發版中并沒有提供直接與通用數據庫接口的工具,但可以通過以下方法解決:購買NI公司開發的附加軟件工具包;利用其它語言如VC++編寫DLL訪問數據庫;利用ADO控件訪問數據庫。[1]Labview支持Activex控件,與其它方法相比基于ADO技術構建本地或遠程數據庫訪問接口不失為一種簡單而又經濟的方法。

      1 ADO技術簡介

        ADO(Activex Data Objects)是Microsot為OLE DB設計的應用層接口,它為一致的數據訪問接口提供了良好的擴展性而不局限于單一的數據源。ADO接口編程模型中包括連接(connection)、命令(command)、參數(parameter)、記錄集(recordset)、字段(field)、錯誤(error)、屬性(property)、集合(collection)、事件(event)等元素。其中connection、command、recordset是三個主體對象,parameters、fields、errors、properties、是四個集合對象。ADO的一般操作方式為:1 連接到數據源;2 指定訪問數據源的命令;3 執行命令;4 將命令執行后產生的結果保存在緩存中;5 更新數據源。ADO接口繼承了OLE DB的高速性,可以高速訪問本地或遠程的數據源。

      2在Labview 中使用ADO接口

        在Labview 中使用ADO接口訪問數據庫一般包括以下幾個步驟:建立ADO控件;連接到數據源;生成SQL命令;執行命令;關閉連接。具體步驟如圖1 所示。

        2.1建立ADO控件

        在前面板控件模板中選擇Activex子模板單擊Automation Refnum項,右鍵單擊Select Activex Class的Browse從類型庫中選擇Microsoft Activex Data Objects 2.7 library Version 2.7,之后可以向框圖程序中加入connection、command、recordset等對象。

        2.2連接到數據源

        首先在Diagram中單擊鼠標右鍵,從Function模板選擇communication子模板,從中選擇Activex項的Automation Open 與ADODB_Connection相連即可打開連接。接著同樣從communication子模板的Activex項中選擇Invoke node (方法節點)并與Automation Open 相連,在其上單擊右鍵選擇methods項的Open方法即出現圖1中所示的節點。其中“Open”表示該節點為打開“連接對象”,“ConnectionString”是連接到數據源的字符串, “UserID”和“Password”是連接到數據源的用戶名和密碼,左側小黑三角表示寫入,可以采用字符串控件或字符串常量為其賦值。


      圖1 Labview 中訪問數據庫

        2.3生成SQL命令、執行命令

        采用與建立“打開連接”方法相同的步驟建立執行節點,如圖1中所示:其中“Execute”右端的小三角表示讀出,“CommandText”表示需要執行的SQL命令文本,該命令文本可由字符串控件或字符串常量賦值。如果需要執行帶參數的命令,則可以采用Labview提供的“格式化字符串生成子VI”(format into string)來定制生成所需要的SQL命令文本。例如可以使用“Create”命令創建表,用“Drop”命令刪除表,用“Insert”命令向表中插入數據,用“Select”命令進行查詢并返回操作結果等(具體的操作命令格式可以參考相關的SQL語言手冊)。RecordsAffected返回一個長整型數值表示命令執行后受影響的記錄集的數目。若要對執行后的記錄進行顯示或讀取字段值則需要建立“Recordset”對象,并與“Execute”相連然后再進行相關的操作。

        2.4關閉連接

        對數據庫訪問操作完畢后要及時關閉連接對象以釋放內存和所用的系統資源。與建立連接對象的“Open”方法和“Execute”方法類似,先建立“Invoke Node ”選擇“Close”方法關閉連接,從“Function ”模板上單擊“Communication”子模板選擇“Activex”中的“Automation Close”項并連線。圖1中使用了一個順序結構,目的是為了使訪問數據庫按一定的順序運行,不致發生命令尚未執行完畢而關閉連接的錯誤。

      3 訪問遠程數據庫

        在Labview中訪問遠程數據庫的途徑有以下幾種:(1)采用NI公司開發的數據庫訪問軟件包實現對本地或遠程數據庫訪問,該軟件包需單獨購買。;(2)基于RDS技術構建客戶端/服務器的遠程數據庫訪問模式,該方案要求系統有數據庫服務器如SQL Server 等,同時也要求對ADO RDS技術有深入的了解;(3)通過Web控件訪問數據庫訪問頁模式。這種方案以網頁瀏覽的方式交互的訪問數據庫訪問頁,對于監測系統而言其實時性難以滿足,同時也需要借助其它語言如VBscript或&#106avascript等。如需要訪問SQL Server則在連接字符串中設定相應的數據源以及遠程計算機名和所要訪問的數據庫名即可實現。考慮到目前監控系統大多處于局域網內且系統要求實時、高速地訪問數據庫,在Labview中以訪問共享文件或網絡驅動器中的遠程數據庫的方式實現遠程訪問因其簡單、經濟而具有較高的實際意義。在局域網內以共享文件方式訪問遠程數據庫的具體作法是在遠程計算機中將數據庫所在的文件夾或驅動器設為共享,在本地計算機應用程序中對遠程計算機中的數據庫文件進行讀寫、查詢等操作。所有的操作均在本地計算機中進行,遠程計算機實際上只提供文件服務,因此要求本地機處理器有較強的能力。[2]

        3.1本地連接字符串設定

        訪問本地數據庫時根據是否提供ODBC支持可以分為兩種情況:(1)通過ODBC DSN 連接;首先要在控制面板的“ODBC數據源”中設定數據源名稱并指定要訪問的數據庫。然后將“DSN=數據源名稱”寫入“ConnectionString”。通過ODBC DSN 連接必須預先在控制面板中進行設定,而且應用程序只能訪問特定的數據源,因此對程序移植和使用有一定影響。(2)無ODBC DSN 連接;以連接到Access 數據庫為例,向“ConnectionString”中寫入以下字符串“Driver={Microsoft Access Driver(*.mdb)};Dbq=c:\somepath\mydb.mdb;Uid=admin;Pwd=”,其中“Driver”指定數據庫驅動程序,“Dbq”指定要訪問的數據庫的路徑;“Uid”和“Pwd”指定訪問數據庫時的用戶名和密碼。無ODBC DSN連接可以在程序中根據需要隨時指定數據源以及所需使用的驅動程序無需在控制面板中手動設置,這種方式便于程序移植和使用。


      圖2向遠程數據庫寫入數據實例

        3.2遠程連接字符串設定

        訪問遠程數據庫步驟與訪問本地數據庫基本類似,差別之處在于數據源的設定有所不同。在網絡共享上訪問Access 數據庫時要在“ConnectionString”中指定數據源提供者為Microsoft Jet OLEDB Provider,應向“ConnectionString”中寫入以下字符串“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\mysever\myshare\mypath\mydb.mdb”其中“Provider”指定數據源提供者,“Data Source”指定數據庫的路徑。“mysever”是遠程計算機名或遠程計算機的IP地址。“myshare”是共享文件夾的名稱,“mypath”是數據庫文件的相對路徑,“mydb.mdb”是被訪問的遠程數據庫名稱。在確認上述各項設定正確無誤且遠程計算機共享打開后就可以向該遠程數據庫進行各項操作了。[3]

        3.3訪問遠程數據庫實例

        本實例由一個數據采集子VI采集生產現場一組數據,并將這些數據存在一個全局數組中,然后采用如圖2所示的框圖程序通過局域網絡向名為“myserver”計算機中的一個Accesss數據庫文件寫入數據。該文件名為“sampledatabase”位于共享名為“123”的文件夾中,“mytable”是該數據庫文件的一個表格文件。由于要向表格中寫入一組數據,因此使用一個“for loop”結構并利用其對數組自動索引功能通過“format into string”子VI生成SQL命令文本依次向表格中寫入數據。經過一次循環可以向數據庫中添加一條記錄,該記錄包含兩個字段:數據編號和數據值。如果是連續采集則可以將上述的程序置于一個“while”循環結構中,定時調用數據寫入程序即可實現連續保存數據。對于從遠程計算機中讀取數據庫文件也可采用類似的方法,在此不再贅述。

      4 結論

        實際證明,在Labview中基于ADO技術構建局域網環境下的,以網絡共享方式實現對本地或遠程數據庫訪問可以充分利用ADO的各種屬性和方法,無需使用其它編程語言,無需增加系統成本,直接在Labview中實現高速、實時地訪問數據庫,是一種簡單、經濟而又具有實際意義的遠程數據庫訪問方法。

      參考文獻

        [1]楊樂平等,Labview高級程序設計[M].清華大學出版社.2003.457-465

        [2] 紀淑娟,蘇蕊,梁永全.利用ADO方法在C/S模式下實現遠程數據訪問[J]. 山東科技大學學報,2003,22(1):73-75

        [3]肖桂東等, SQL Server疑難解析[M].電子工業出版社.2003.316-325

      文章版權歸西部工控xbgk所有,未經許可不得轉載。

      主站蜘蛛池模板: 亚洲AV成人一区二区三区在线看| 亚洲午夜日韩高清一区| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 天堂va在线高清一区| 波多野结衣电影区一区二区三区| 亚洲夜夜欢A∨一区二区三区| 国产91精品一区二区麻豆亚洲 | 免费萌白酱国产一区二区| 久久精品国产一区二区三区日韩| 国产伦理一区二区| 日韩一区二区免费视频| 亚洲AV无码国产精品永久一区| 伊人久久精品无码麻豆一区| 精品日韩亚洲AV无码一区二区三区| 日韩AV无码久久一区二区| 久久国产一区二区| 亚洲AV综合色区无码一区爱AV| 亚洲爆乳精品无码一区二区三区 | 日本在线一区二区| 99国产精品一区二区| 日亚毛片免费乱码不卡一区| 国产嫖妓一区二区三区无码| 国产一区二区三区美女| 波多野结衣在线观看一区| 99偷拍视频精品一区二区| 日韩美女视频一区| 内射少妇一区27P| 国产激情一区二区三区成人91| 亚洲av无码一区二区三区网站| 国产福利一区二区三区在线观看| 国产精品视频一区| 精品国产日韩亚洲一区在线| 卡通动漫中文字幕第一区| 一区二区三区福利| 日韩亚洲一区二区三区| 亚洲一区精品视频在线| 在线视频一区二区日韩国产| 国产在线观看精品一区二区三区91| 国产综合无码一区二区辣椒| 无码人妻精品一区二区三18禁| 成人h动漫精品一区二区无码|