无码中文字幕色专区_91av俱乐部_无码人妻h动漫_26uuu成人_91九色丨porny丨国产jk_青青视频在线播放_国内自拍第二页_国产又粗又长又爽又黄的视频_色哟哟免费网站_久久出品必属精品_a级黄色一级片_99日在线视频

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

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

      表一:WinCE自帶數據庫與SQLCE數據庫功能對照表
 

 

WinCE自帶數據庫

SQLCE數據庫

開發方式

使用API函數操作

使用SQL語句操作

數據類型

較少(9)

較多(20)

pcSQL Sever數據同步

不支持

支持

更改表字段

不支持

支持

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



圖1  EVC通過DBManager訪問數據庫模型

一、DBManager類及派生類說明

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

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

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

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

      在工業現場,用戶常常需要把現場的狀態保存起來,例如,把AD采集的數據和開關量保存起來。本文中,以英創的ETA197 AD模塊和ETA716 IO模塊為例,說明數據庫的操作。ETA197、ETA716與嵌入式主板的連接如圖2所示。



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

      根據實際情況,我們需要保存的信息有時間、IO輸出值、IO輸入值、8通道AD采樣值,根據我們的需要,我們設計ADDIOData數據結構如下。

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

      根據此數據結構,我們實現了創建表和插入記錄的API函數,函數聲明如下:

      class ADDataBase : public DBManager
      {
            public:

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

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

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

二、使用DBManager類及派生類實現創建表、插入記錄等操作的順序為:

      (1)打開數據庫
      (2)創建表
      (3)插入記錄

      ADDataBase dbm;
      CString DBFile=_T('\\nandflash\\emtronix.sdf');
      CString TableName=_T('ADCollection');
      UserInfo test;
      dbm.OpenDatabase(DBFile); //打開數據庫,參數為數據庫路徑名
      dbm.CreateTable(TableName);  //創建表
      for(i=0;i<6;i++)     //每秒鐘采集一次數據
      {
            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);
      }

      由上例可以看出,使用英創公司提供的DBManager的派生類,不必了解數據庫就可以方便地實現數據的存儲。

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

附錄一、ADOCE簡介

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



圖1  ADOCE的數據存儲模型

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

      連接對象(Connection)

      Connection對象建立一個對象數據源的數據交換環境,ADOCE允許建立對ACCESS數據源和SQLCE數據源的連接。

      記錄集對象(Recordset)

      Recordset對象是ADOCE數據操作的核心,它是查詢結果的集合,可以通過這個結果集處理來自數據源的數據,包括修改記錄、更新記錄、插入和刪除記錄等。可以通過Recordset的Open方法執行SQL語句,實現數據庫的操作。

      字段對象(Field)

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

附錄二、SQL語句語法說明

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

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

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

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

      2、Drop Table語句的功能是將一個現存于數據庫內的表刪除,其所使用的語法與格式如下所示:

      Drop Table 表名稱 

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

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

      其中,From關鍵詞是設置來源表名稱,使用時可以設置使用一個或多個表,而表名稱間以逗號分隔。在搜尋結果中取出所需的字段內容,設置的字段名稱以逗號分隔,如果要取得表上的所有字段,可直接用“*”表示。

      SELECT * FROM Products WHERE ProductID='02'

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

      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環境下,對數據的開發,其實就是通過ADOCE COM組件執行SQL語句的過程。為了使用戶方便的使用ADOCE,我們提供了DBManager類,通過此類,可以方便的建立與數據庫的連接、執行sql語句等操作。


 

狀 態: 離線

公司簡介
產品目錄

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

關于我們 | 聯系我們 | 廣告服務 | 本站動態 | 友情鏈接 | 法律聲明 | 不良信息舉報
工控網客服熱線:0755-86369299
版權所有 中華工控網 Copyright©2022 Gkong.com, All Rights Reserved

无码中文字幕色专区_91av俱乐部_无码人妻h动漫_26uuu成人_91九色丨porny丨国产jk_青青视频在线播放_国内自拍第二页_国产又粗又长又爽又黄的视频_色哟哟免费网站_久久出品必属精品_a级黄色一级片_99日在线视频
日韩不卡一区二区三区| 91亚洲国产| 免费高清在线一区| 超碰99在线| 日本免费一区二区视频| 麻豆精品av| 国产欧美精品| 欧美日韩国产一区二区在线观看| 久久精品国产亚洲夜色av网站| 免费亚洲婷婷| 国产毛片精品久久| 日韩不卡在线观看日韩不卡视频| 在线综合视频| 国产韩日影视精品| 久久蜜桃av| 欧美+日本+国产+在线a∨观看| 精品久久一区| 久久亚洲资源中文字| 日韩精品高清不卡| 热久久国产精品| 中文一区二区| 在线精品视频一区| 视频在线在亚洲| 在线观看亚洲精品福利片| 日韩精品一二三四| 欧美一级一区| 激情综合五月| 日韩大片在线| 99精品美女| 欧美日韩视频一区二区三区| 亚洲福利久久| 欧美精品激情| 日本一不卡视频| 国产精品蜜月aⅴ在线| 国产一区二区三区国产精品| 在线天堂中文资源最新版| 精品视频高潮| 久久久9色精品国产一区二区三区| 日韩欧美少妇| 久久av一区二区三区| 免费在线观看视频一区| 日韩精品视频中文字幕| 国产在线日韩精品| 亚洲无线一线二线三线区别av| av亚洲免费| 日韩激情av在线| 精品三级在线| 国产精品女主播一区二区三区| 日韩激情一二三区| 日韩三区在线| 日本aⅴ精品一区二区三区| 国产精品亚洲人成在99www| 麻豆国产在线| 中国女人久久久| 福利一区二区免费视频| 宅男在线一区| 国产精品久av福利在线观看| 久久免费黄色| 88久久精品| 99热精品久久| 国产精品分类| 午夜免费一区| 久久三级中文| 亚洲一区欧美激情| 精品久久中文| 婷婷亚洲精品| se01亚洲视频| 国产亚洲精品美女久久| 欧美高清一区| 国产欧美久久一区二区三区| 亚洲国内欧美| 国产精品观看| 中文精品电影| 成人羞羞在线观看网站| 国产一卡不卡| 视频一区二区三区中文字幕| 日本一区二区免费高清| 一区二区三区国产盗摄| 欧美 日韩 国产精品免费观看| 国产精品欧美三级在线观看| 狠狠干成人综合网| 高清av一区| 欧美一区网站| 亚洲a级精品| 在线视频精品| 欧美高清不卡| 国产亚洲一区二区手机在线观看| 亚洲三级在线| 久久不射中文字幕| 亚洲二区免费| 亚洲成av人片一区二区密柚| 91日韩免费| 欧美xxxx中国| 国产一区二区三区成人欧美日韩在线观看| 麻豆成人在线| 一本色道久久精品| 欧美日韩三区| 免费日韩av片| 亚洲性视频在线| 亚洲不卡视频| 欧美精品三级在线| 欧美精品中文| 国产精品www.| 国产日韩视频| 国产精品视频3p| 免费日韩成人| av资源中文在线| 久久亚洲专区| 中文欧美日韩| 天堂va在线高清一区| 日本一区二区三区视频在线看| 韩日一区二区三区| 五月综合激情| 一区二区三区国产在线| 日本视频中文字幕一区二区三区| 亚洲精品婷婷| 国产麻豆一区二区三区| 福利精品在线| 一本色道精品久久一区二区三区| 免费人成网站在线观看欧美高清| 日韩福利视频导航| 97精品国产| 电影天堂国产精品| 欧美在线网站| 91麻豆精品激情在线观看最新| 久久亚洲国产精品尤物| 亚洲黄色免费看| 亚洲男女av一区二区| 日韩av中文字幕一区| 久久亚洲黄色| 亚洲女同一区| 欧美韩一区二区| 婷婷综合五月| 日本午夜精品久久久| 毛片在线网站| 亚洲精品综合| 97精品中文字幕| 伊人国产精品| 中文字幕在线官网| 日韩欧美一区二区三区免费看| 日本在线精品| 日韩视频中文| 国产高清视频一区二区| 亚洲www啪成人一区二区| 水野朝阳av一区二区三区| 免费一级欧美在线观看视频| 免费毛片在线不卡| 国产精品www.| 久久最新视频| 国产高清不卡| 欧美日韩中文| 午夜宅男久久久| 色老板在线视频一区二区| 欧美午夜不卡| 国产精品99久久免费观看| 国产精品不卡| 欧美成人日韩| 欧美日韩精品免费观看视完整| 日韩久久99| 99久久精品网| 国产一区二区三区四区大秀| 免费久久精品视频| 亚洲午夜91| 亚洲成人va| 精品精品99| 欧美日韩调教| 日本大胆欧美人术艺术动态| 欧美成人午夜| 久久精品99久久无色码中文字幕| 美女视频黄 久久| 欧美日本一区| 日韩视频一二区| 中文一区二区| 欧美日韩免费观看一区=区三区 | 欧美特黄一区| 欧美日韩精品免费观看视欧美高清免费大片| 日韩中文字幕| 午夜亚洲福利| 日韩av中文字幕一区二区 | 红杏一区二区三区| 成人亚洲一区二区| 精品国产鲁一鲁****| 日本精品另类| 天堂久久av| 国产欧美一区二区三区米奇| 中文字幕日韩欧美精品高清在线| 丝袜a∨在线一区二区三区不卡| 午夜久久黄色| 亚洲我射av| 欧美精品中文| 日韩综合一区| 在线人成日本视频| 99精品视频精品精品视频| 不卡在线一区| 日韩在线视频一区二区三区| 日韩va欧美va亚洲va久久| 国产精品2区| 久久久久伊人| 日韩精品免费一区二区在线观看| 日本国产精品|