999国内精品永久免费视频,色偷偷9999www,亚洲国产成人爱av在线播放,6080亚洲人久久精品,欧美超高清xxxhd

首頁 新聞 工控搜 論壇 廠商論壇 產(chǎn)品 方案 廠商 人才 文摘 下載 展覽
中華工控網(wǎng)首頁
  P L C | 變頻器與傳動 | 傳感器 | 現(xiàn)場檢測儀表 | 工控軟件 | 人機界面 | 運動控制
  D C S | 工業(yè)以太網(wǎng) | 現(xiàn)場總線 | 顯示調(diào)節(jié)儀表 | 數(shù)據(jù)采集 | 數(shù)傳測控 | 工業(yè)安全
  電 源 | 嵌入式系統(tǒng) | PC based | 機柜箱體殼體 | 低壓電器 | 機器視覺
嵌入式數(shù)據(jù)庫SQLCE的開發(fā)與應(yīng)用
英創(chuàng)信息技術(shù)有限公司
收藏本文     查看收藏

     在當(dāng)前的嵌入式工控產(chǎn)品中,數(shù)據(jù)庫得到了越來越多的應(yīng)用。通過數(shù)據(jù)庫,可以非常方便地存儲和檢索數(shù)據(jù),極大地提高工作效率。英創(chuàng)公司基于WinCE的ARM9工控主板,提供了兩種類型的數(shù)據(jù)庫,供客戶的應(yīng)用程序選擇。一種是WinCE自帶的數(shù)據(jù)庫,主要面對需要存儲的數(shù)據(jù)量較小,數(shù)據(jù)結(jié)構(gòu)相對簡單的應(yīng)用,例如系統(tǒng)的動態(tài)配置文件,則使用起來非常合適。另一種則是在PC中最流行的SQL數(shù)據(jù)庫,英創(chuàng)ARM9工控主板缺省配置的SQL數(shù)據(jù)庫版本為SQL CE2.0。在表一中,列出了WinCE自帶數(shù)據(jù)庫與SQL CE數(shù)據(jù)庫部分功能的對比,用戶可以根據(jù)自己的需要,選擇合適的數(shù)據(jù)庫。關(guān)于WinCE自帶數(shù)據(jù)庫的操作請參考《EVC高級編程及其應(yīng)用開發(fā)》WinCE基礎(chǔ)數(shù)據(jù)庫編程部分。本文主要講解在eVC開發(fā)環(huán)境下,以使用ADOCE 3.1為例詳細(xì)說明開發(fā)SQLCE本地數(shù)據(jù)庫的方法。

      表一:WinCE自帶數(shù)據(jù)庫與SQLCE數(shù)據(jù)庫功能對照表
 

 

WinCE自帶數(shù)據(jù)庫

SQLCE數(shù)據(jù)庫

開發(fā)方式

使用API函數(shù)操作

使用SQL語句操作

數(shù)據(jù)類型

較少(9)

較多(20)

pcSQL Sever數(shù)據(jù)同步

不支持

支持

更改表字段

不支持

支持

      在EVC環(huán)境下由于沒有提供專門的API函數(shù)對SQLCE進行操作,需要通過ADOCE(Active Data Object for Windows CE)組件才能實現(xiàn)對SQLCE數(shù)據(jù)庫的操作。為了方便用戶使用SQLCE數(shù)據(jù)庫,利用ADOCE組件技術(shù)(ADOCE介紹在附錄一中),針對數(shù)據(jù)庫操作中常用的功能,包括創(chuàng)打開數(shù)據(jù)庫、建數(shù)據(jù)表等,英創(chuàng)提供了一個對SQLCE數(shù)據(jù)庫操作的管理類DBManager,應(yīng)用程序通過調(diào)用該類中提供的API函數(shù),就可以很方便的建立與SQLCE的鏈接、打開數(shù)據(jù)庫,并可以直接利用SQL語句來對數(shù)據(jù)庫進行建立表、為表添加記錄以及查詢表中的記錄等功能。在eVC環(huán)境下通過DBManager類訪問SQLCE數(shù)據(jù)庫模型如圖1所示。



圖1  EVC通過DBManager訪問數(shù)據(jù)庫模型

一、DBManager類及派生類說明

      DBManager類主要提供打開數(shù)據(jù)庫、執(zhí)行SQL語句等方法。其頭文件聲明如下:

      //函數(shù)功能:打開數(shù)據(jù)庫
      //入口參數(shù):lpszFileName表示要打開的數(shù)據(jù)庫名稱,為絕對路徑加文件名。
      //出口參數(shù):無
      //返 回 值:TRUE:打開數(shù)據(jù)庫成功;FALSE:打開數(shù)據(jù)庫失敗
      bool OpenDatabase(LPCTSTR lpszDBName);

      //函數(shù)功能:執(zhí)行SQL語句
      //入口參數(shù):lpstrSql為要執(zhí)行SQL語句的字符串。
      //出口參數(shù):無
      //返 回 值:TRUE:執(zhí)行SQL語句成功;FALSE:執(zhí)行SQL語句失敗
      bool ExecSql(LPCTSTR lpstrSql);   

      如果想靈活使用DBManager類對數(shù)據(jù)庫操作,必須了解SQL語句,常用SQL語句可以參考附錄二中的內(nèi)容。但是,對于嵌入式工程師來說,有很多用戶對SQL語句并不了解,這樣,對用戶使用數(shù)據(jù)庫提高了門檻。在實際應(yīng)用中,嵌入式主板的主要任務(wù)是把采集工業(yè)現(xiàn)場的狀態(tài)并保存到數(shù)據(jù)庫中,如果想查看分析數(shù)據(jù),可以通過WebServer把數(shù)據(jù)庫信息傳輸?shù)紺lient端。為了方便不了解SQL語句的用戶使用數(shù)據(jù)庫,我們在基類DBManager中提供了幾個虛函數(shù),并給出在派生類中實現(xiàn)虛函數(shù)的例子。這樣,使用API函數(shù)就可以實現(xiàn)打開數(shù)據(jù)庫、創(chuàng)建表、插入記錄等操作。用戶可以根據(jù)要保存數(shù)據(jù)結(jié)構(gòu)修改虛函數(shù)就可以滿足用戶操作數(shù)據(jù)庫的要求,下面以一個實際示例說明使用派來類的方法。

      在工業(yè)現(xiàn)場,用戶常常需要把現(xiàn)場的狀態(tài)保存起來,例如,把AD采集的數(shù)據(jù)和開關(guān)量保存起來。本文中,以英創(chuàng)的ETA197 AD模塊和ETA716 IO模塊為例,說明數(shù)據(jù)庫的操作。ETA197、ETA716與嵌入式主板的連接如圖2所示。



圖2 嵌入式主板與ETA197、ETA716連接示意圖

      根據(jù)實際情況,我們需要保存的信息有時間、IO輸出值、IO輸入值、8通道AD采樣值,根據(jù)我們的需要,我們設(shè)計ADDIOData數(shù)據(jù)結(jié)構(gòu)如下。

      struct ADDIOData 
      {
            CString adtime;  //采集信息的時間
            UCHAR dout;  //IO輸出值
            UCHAR din;  //IO輸入值
            float Advalue[8]; //AD采樣值
      };

      根據(jù)此數(shù)據(jù)結(jié)構(gòu),我們實現(xiàn)了創(chuàng)建表和插入記錄的API函數(shù),函數(shù)聲明如下:

      class ADDataBase : public DBManager
      {
            public:

                  //函數(shù)功能:創(chuàng)建表
                  //入口參數(shù):tablename表示要創(chuàng)建的表名。
                  //出口參數(shù):無
                  //返 回 值:TRUE:創(chuàng)建表成功;FALSE:創(chuàng)建表失敗
                  bool CreateTable(LPCTSTR tablename);

                  //函數(shù)功能:刪除表
                  //入口參數(shù):tablename表示要刪除的表名。
                  //出口參數(shù):無
                  //返 回 值:TRUE:刪除表成功;FALSE:刪除表失敗
                  bool DeleteTable(LPCTSTR tablename);

                  //函數(shù)功能:插入記錄
                  //入口參數(shù):tablename表示表名,fieldVal為記錄值結(jié)構(gòu)體
                  //出口參數(shù):無
                  //返 回 值:TRUE:插入記錄成功;FALSE:插入記錄失敗
                  bool InsertRecord(LPCTSTR tablename,ADDIOData fieldVal); 
      };

二、使用DBManager類及派生類實現(xiàn)創(chuàng)建表、插入記錄等操作的順序為:

      (1)打開數(shù)據(jù)庫
      (2)創(chuàng)建表
      (3)插入記錄

      ADDataBase dbm;
      CString DBFile=_T('\\nandflash\\emtronix.sdf');
      CString TableName=_T('ADCollection');
      UserInfo test;
      dbm.OpenDatabase(DBFile); //打開數(shù)據(jù)庫,參數(shù)為數(shù)據(jù)庫路徑名
      dbm.CreateTable(TableName);  //創(chuàng)建表
      for(i=0;i<6;i++)     //每秒鐘采集一次數(shù)據(jù)
      {
            test.dout=0x01<ISA_WriteUchar(EM9260_CS1,0x10,test.dout); //寫716輸出端口
            ISA_ReadUchar(EM9260_CS1,0x10,&test.din); //讀716輸入端口
            for (j=0;j<8;j++)
            {
                  getADValue(j,0,&test.Advalue[j]);  //得到8通道AD采樣值
            }
            dbm.InsertRecord(TableName,test);  //向tablename表中插入記錄
            Sleep(1000);
      }

      由上例可以看出,使用英創(chuàng)公司提供的DBManager的派生類,不必了解數(shù)據(jù)庫就可以方便地實現(xiàn)數(shù)據(jù)的存儲。

      這種操作數(shù)據(jù)庫的方式不是十分靈活,對熟悉數(shù)據(jù)庫的用戶,可以使用DBManager類,執(zhí)行SQL語句,靈活對數(shù)據(jù)庫操作。關(guān)于DBManager類,可以參考源碼中注釋說明。

附錄一、ADOCE簡介

      ADOCE(Active Data Object for Windows CE)技術(shù)提供了高層數(shù)據(jù)庫應(yīng)用軟件的訪問接口,可在eVC、eVB等高級語言環(huán)境中直接使用,ADOCE是一種易用的COM組件,關(guān)于COM組件的開發(fā)與調(diào)用在《ARM9工控板在遠程監(jiān)控中的應(yīng)用》系列文章中有詳細(xì)的說明。ADOCE作為開發(fā)WinCE數(shù)據(jù)庫應(yīng)用程度的面向?qū)ο蟮腃OM接口,其訪問數(shù)據(jù)庫是通過訪問OLE DB數(shù)據(jù)提供程序來進行的,并且提供了一種對OLEDB數(shù)據(jù)提供程序的簡單高層訪問接口。ADOCE技術(shù)簡化了OLE DB的操作,在OLE DB的程序中使用了大量的COM接口,而ADOCE則封裝了這些接口,所以,ADOCE是一種高層的訪問技術(shù)。ADOCE的數(shù)據(jù)存儲模型如圖1 所示:



圖1  ADOCE的數(shù)據(jù)存儲模型

      ADOCE支持Connection、Recordset、Field、Fields、Error對象,但不支持Command對象、Property對象以及Properties collection。下面介紹幾個重要的ADOCE對象。

      連接對象(Connection)

      Connection對象建立一個對象數(shù)據(jù)源的數(shù)據(jù)交換環(huán)境,ADOCE允許建立對ACCESS數(shù)據(jù)源和SQLCE數(shù)據(jù)源的連接。

      記錄集對象(Recordset)

      Recordset對象是ADOCE數(shù)據(jù)操作的核心,它是查詢結(jié)果的集合,可以通過這個結(jié)果集處理來自數(shù)據(jù)源的數(shù)據(jù),包括修改記錄、更新記錄、插入和刪除記錄等?梢酝ㄟ^Recordset的Open方法執(zhí)行SQL語句,實現(xiàn)數(shù)據(jù)庫的操作。

      字段對象(Field)

      ·字段對象的每條記錄都由Fields組成,其中包括名稱、數(shù)據(jù)和值。
      ·基于ADOCE的WinCE數(shù)據(jù)庫開發(fā)程序包括以下基本步驟:
      ·創(chuàng)建Connection對象
      ·打開數(shù)據(jù)源,建立同數(shù)據(jù)源的連接
      ·創(chuàng)建Record對象
      ·將Recordset的連接字符串設(shè)置到Connection對象中
      ·使用SQL命令
      ·通過Recordset對象完成結(jié)果記錄集的操作
      ·終止連接

附錄二、SQL語句語法說明

      SQL是Structure Query Language結(jié)構(gòu)化查詢語言的縮寫,通過SQL語句的執(zhí)行,可以對數(shù)據(jù)庫內(nèi)容(表及記錄)進行修改或查詢,因此數(shù)據(jù)庫的操作就是執(zhí)行SQL語句。下面簡要介紹下幾個重要的SQL語句。

      1、Create Table語句功能是創(chuàng)建表,其語法格式如下:

      Create Table 表名稱 (字段名稱 數(shù)據(jù)類型 [(字段長度)] [,字段名稱 數(shù)據(jù)類型 [(字段長度)] ,[ PRIMARY KEY | UNIQUE ] ]

      例如: CREATE TABLE Products (ProductID int,Name nvarchar(255), PRIMARY KEY (ProductID)

      2、Drop Table語句的功能是將一個現(xiàn)存于數(shù)據(jù)庫內(nèi)的表刪除,其所使用的語法與格式如下所示:

      Drop Table 表名稱 

      3、Select語句可以對表的記錄作查詢、統(tǒng)計。由于Select語句使用比較靈活,我們以幾個具體的例子講價Select的用法。

      Select  字段名稱 [,字段名稱] From 表名稱

      其中,F(xiàn)rom關(guān)鍵詞是設(shè)置來源表名稱,使用時可以設(shè)置使用一個或多個表,而表名稱間以逗號分隔。在搜尋結(jié)果中取出所需的字段內(nèi)容,設(shè)置的字段名稱以逗號分隔,如果要取得表上的所有字段,可直接用“*”表示。

      SELECT * FROM Products WHERE ProductID='02'

      Where關(guān)鍵詞是設(shè)置查詢記錄條件,用以取得所有符合設(shè)置條件內(nèi)容的記錄。在條件設(shè)置中可以使用 > 、<、=等比較符號,而對于多項條件的判斷也可以利用AND,OR等邏輯操作數(shù)來連接。

      4、插入記錄

      INSERT INTO  表名[(field1[, field2[, ...]])] VALUES (value1[, value2[, ...]]

      例如:INSERT INTO Products (ProductID,Name) VALUES (1,'EM9000嵌入式模塊')

      5、刪除記錄

      DELETE   FROM 表名 WHERE criteria

      例如:DELETE   FROM 表名 WHERE ProdutcID=01

      6、更新記錄

      UPDATE 表名   SET  newvalue     WHERE criteria;

      例如:Update Products set Name=’EM9161嵌入式主板’ where ProdcutID=01

      在eVC環(huán)境下,對數(shù)據(jù)的開發(fā),其實就是通過ADOCE COM組件執(zhí)行SQL語句的過程。為了使用戶方便的使用ADOCE,我們提供了DBManager類,通過此類,可以方便的建立與數(shù)據(jù)庫的連接、執(zhí)行sql語句等操作。


 

狀 態(tài): 離線

公司簡介
產(chǎn)品目錄

公司名稱: 英創(chuàng)信息技術(shù)有限公司
聯(lián) 系 人: 李林
電  話: 028-86180660
傳  真: 028-85141028
地  址: 成都市高新區(qū)高朋大道5號博士創(chuàng)業(yè)園
郵  編: 610041
主  頁:
 
該廠商相關(guān)技術(shù)文摘:
GPRS集抄單元整機方案
DOS工控主板的TCP/IP應(yīng)用
低成本LCD的選型與使用
ARM9工控主板支持?jǐn)帱c續(xù)傳的FTP文件傳送
C#使用COM組件接口操作精簡ISA總線
基于精簡ISA總線的CE設(shè)備驅(qū)動程序
工控主板EM9360的GPIO的各種使用方法
工控主板EM9000數(shù)字IO的增強擴展
英創(chuàng)工控主板同時驅(qū)動RS232和RS485的方法
ARM9工控板在遠程監(jiān)控中的應(yīng)用
主板EM9161實現(xiàn)音頻輸出的方法
更多文摘...
立即發(fā)送詢問信息在線聯(lián)系該技術(shù)文摘廠商:
用戶名: 密碼: 免費注冊為中華工控網(wǎng)會員
請留下您的有效聯(lián)系方式,以方便我們及時與您聯(lián)絡(luò)

關(guān)于我們 | 聯(lián)系我們 | 廣告服務(wù) | 本站動態(tài) | 友情鏈接 | 法律聲明 | 不良信息舉報
工控網(wǎng)客服熱線:0755-86369299
版權(quán)所有 中華工控網(wǎng) Copyright©2022 Gkong.com, All Rights Reserved