用SQL Server實(shí)現(xiàn)采集數(shù)據(jù)的網(wǎng)上共享_第1頁(yè)
用SQL Server實(shí)現(xiàn)采集數(shù)據(jù)的網(wǎng)上共享_第2頁(yè)
用SQL Server實(shí)現(xiàn)采集數(shù)據(jù)的網(wǎng)上共享_第3頁(yè)
用SQL Server實(shí)現(xiàn)采集數(shù)據(jù)的網(wǎng)上共享_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、用SQL Server實(shí)現(xiàn)采集數(shù)據(jù)的網(wǎng)上共享王術(shù) 余立建 西南交通大學(xué)通信與計(jì)算機(jī)工程學(xué)院摘要本文的目的是希望在數(shù)據(jù)采集系統(tǒng)中,用SQL Server數(shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn)數(shù)據(jù)的網(wǎng)絡(luò)共享。文中介紹了VB中的幾個(gè)數(shù)據(jù)訪問(wèn)庫(kù),SQL Server數(shù)據(jù)庫(kù)和在VB中分別用DAO和ADO訪問(wèn)SQL Server的幾個(gè)方法,其中以ADO最為詳細(xì)。關(guān)鍵詞:VB,SQL Server,DAO,ADO,數(shù)據(jù)采集AbstractThe purpose of this paper is to use the SQL Server database to realize the sharing of data in the n

2、etwork in the data acquisition system. The paper induces several data accessing libraries, SQL Server database and several methods to use the DAO and ADO to access the SQL Server in the VB.Keywards:VB,SQL Server,DAO,ADO,Data acquisition1 前言隨著網(wǎng)絡(luò)的迅速發(fā)展,越來(lái)越多的的工業(yè)控制系統(tǒng)要求與網(wǎng)絡(luò)結(jié)合,實(shí)現(xiàn)工控系統(tǒng)中采集數(shù)據(jù)的網(wǎng)上共享。一些工控組態(tài)軟件也紛紛推出

3、了對(duì)網(wǎng)絡(luò)的支持。通過(guò)網(wǎng)絡(luò)進(jìn)行遠(yuǎn)程數(shù)據(jù)采集已經(jīng)成為可能,而且在一些領(lǐng)域已經(jīng)得到了應(yīng)用。目前采用的網(wǎng)絡(luò)結(jié)構(gòu)主要是Client/Server的兩層結(jié)構(gòu),需要我們分別編寫客戶機(jī)與服務(wù)器的網(wǎng)絡(luò)通訊程序,這雖然可以實(shí)現(xiàn)數(shù)據(jù)的共享,但是系統(tǒng)在數(shù)據(jù)的安全性、保密性與輔助功能上卻很不足。我們針對(duì)這些問(wèn)題決定利用SQL Server關(guān)系數(shù)據(jù)庫(kù)所提供的強(qiáng)大的數(shù)據(jù)共享以及輔助功能來(lái)彌補(bǔ)不足。2 SQL Server數(shù)據(jù)庫(kù)簡(jiǎn)介Microsoft SQL Server是一種高性能的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS)。它是專門為大量的數(shù)據(jù)處理和管理數(shù)據(jù)存儲(chǔ)而設(shè)計(jì)的。它采用客戶端/服務(wù)器(client/server)網(wǎng)絡(luò)結(jié)構(gòu)

4、,一般包括兩種結(jié)構(gòu):一種是兩層;一種是三層。在兩層結(jié)構(gòu)中,客戶機(jī)可以直接訪問(wèn)服務(wù)器,而在三層結(jié)構(gòu)中,客戶機(jī)必須通過(guò)一個(gè)應(yīng)用服務(wù)器來(lái)訪問(wèn)數(shù)據(jù)庫(kù)服務(wù)器。當(dāng)只有少數(shù)的幾個(gè)用戶時(shí),我們可以采用兩層結(jié)構(gòu),因?yàn)檫@樣的結(jié)構(gòu)比較的簡(jiǎn)單,但是當(dāng)用戶較多的時(shí)候,數(shù)據(jù)庫(kù)服務(wù)器的資源不夠,所以我們就必須在中間加上一個(gè)應(yīng)用服務(wù)器。這時(shí),客戶機(jī)只是向應(yīng)用服務(wù)器提出操作要求,并顯示結(jié)果。三層網(wǎng)絡(luò)結(jié)構(gòu)的優(yōu)勢(shì)在于,它把所有的客戶機(jī)有效的組織起來(lái),節(jié)約了數(shù)據(jù)庫(kù)服務(wù)器的資源,提高了整個(gè)網(wǎng)絡(luò)的運(yùn)行性能。由于本文是基于一個(gè)工業(yè)的數(shù)據(jù)采集系統(tǒng),它的數(shù)據(jù)庫(kù)服務(wù)器就是上位機(jī)(安裝了Windows 2000 server 和 SQL Serv

5、er 2000),客戶機(jī)只限于單位系統(tǒng)內(nèi)的幾臺(tái)PC機(jī)(安裝了SQL Server 2000的客戶端工具),故我們采用了兩層結(jié)構(gòu)。另外我們可以編寫基于數(shù)據(jù)庫(kù)的WEB網(wǎng)頁(yè),使用戶的訪問(wèn)更方便。3 VB數(shù)據(jù)訪問(wèn)庫(kù)簡(jiǎn)介Microsoft公司根據(jù)開(kāi)發(fā)人員的要求,發(fā)布了不同的數(shù)據(jù)訪問(wèn)庫(kù),包括ODBC、DAO、RDO和ADO,其中ADO是Microsoft開(kāi)發(fā)的訪問(wèn)SQL Server的主要數(shù)據(jù)方法。我們這里只介紹與本文有關(guān)的DAO和ADO。DAO Data Access Objects(DAO)是Access和VB所帶的自然對(duì)象模型。DAO用Jet數(shù)據(jù)庫(kù)引擎讀取Access數(shù)據(jù)庫(kù)(MDB文件)中的數(shù)據(jù)。但

6、DAO也可以從Foxpro或dBase等ISAM數(shù)據(jù)庫(kù)和任何ODBC數(shù)據(jù)源中讀取數(shù)據(jù),包括SQL Server。由于DAO在VB3.0中就已經(jīng)出現(xiàn),在Access和VB中都有提供,因此使用DAO的應(yīng)用程序比使用其他數(shù)據(jù)訪問(wèn)方法的應(yīng)用程序多。盡管DAO的對(duì)象結(jié)構(gòu)與RDO和ADO相似,但它卻不是訪問(wèn)SQL Server數(shù)據(jù)庫(kù)的最好方法。ADOADO(Activex Data Objects)是OLE DB之上的對(duì)象模型。利用OLE DB API編程數(shù)據(jù)訪問(wèn)要求知道其API調(diào)用和如何處理數(shù)據(jù),這是相當(dāng)繁瑣的過(guò)程。ADO是面向?qū)ο蟮腁PI,隱藏了OLE DB的細(xì)節(jié)。開(kāi)發(fā)人員不必使用OLE DB API

7、調(diào)用,而可以用ADO對(duì)象提供的屬性和方法讀取和處理數(shù)據(jù)。這些對(duì)象比OLE DB編程更直觀,更好用。和所有UDA組件一樣,ADO也是基于COM的。ADO提供了所有數(shù)據(jù)訪問(wèn)要求的易用接口。與其他訪問(wèn)庫(kù)不同的是,ADO支持特定數(shù)據(jù)源功能,此功能是通過(guò)不同OLE DB數(shù)據(jù)提供者(Data provider)提供的。4 數(shù)據(jù)庫(kù)訪問(wèn)我們用VB來(lái)實(shí)現(xiàn)系統(tǒng),并提供了幾個(gè)方案,各位讀者可以根據(jù)自己的需求酌情采納。(1) 第一種方法就是通過(guò)Access來(lái)進(jìn)行連接,這種方法適用與那些熟悉用DAO編程或者已經(jīng)擁有了用DAO來(lái)訪問(wèn)Access數(shù)據(jù)庫(kù)程序的人,他們需要的是在不改變現(xiàn)有程序的基礎(chǔ)上來(lái)連接到SQL Serve

8、r數(shù)據(jù)庫(kù),以實(shí)現(xiàn)數(shù)據(jù)的網(wǎng)上共享。VB6.0工具箱中的數(shù)據(jù)控件Data提供了一種訪問(wèn)Access數(shù)據(jù)庫(kù)的方法。通過(guò)設(shè)置屬性,可以將數(shù)據(jù)控件與一個(gè)特定的數(shù)據(jù)庫(kù)及其中的表聯(lián)系起來(lái),并可進(jìn)入到數(shù)據(jù)庫(kù)中的任一記錄。數(shù)據(jù)控件只是負(fù)責(zé)數(shù)據(jù)庫(kù)和工程之間的數(shù)據(jù)交換,本身并不顯示數(shù)據(jù),必須用VB中的數(shù)據(jù)綁定控件與數(shù)據(jù)控件一起來(lái)完成訪問(wèn)數(shù)據(jù)庫(kù)的任務(wù)。在VB中,對(duì)數(shù)據(jù)敏感的綁定控件有文本框(TextBox)、標(biāo)簽(Label)、復(fù)選框(CheckBox)、圖象框(Image)、列表框(ListBox)等。綁定控件和數(shù)據(jù)控件必須在同一個(gè)窗體中。另外就是要注意版本的問(wèn)題,如果用的是Access2000,那么它與VB6.0

9、是不能兼容的,因?yàn)锳ccess2000用的數(shù)據(jù)庫(kù)引擎是Jet4.0比VB6.0的數(shù)據(jù)庫(kù)引擎版本要高。要解決這個(gè)問(wèn)題有兩個(gè)途徑,一個(gè)是改Access2000,打開(kāi)Access2000后,單擊【工具】菜單上的【數(shù)據(jù)庫(kù)實(shí)用工具】|【轉(zhuǎn)換數(shù)據(jù)庫(kù)】|【到早期Access數(shù)據(jù)庫(kù)版本】;另一個(gè)是更改VB6.0,單擊【工程】菜單中的【引用】,把引用Microsoft DAO 3.51 Object Library 庫(kù)改為引用Microsoft DAO 3.6 Object Library庫(kù)。利用控件可以很容易的連接到數(shù)據(jù)庫(kù),并對(duì)數(shù)據(jù)庫(kù)中的記錄進(jìn)行操作,這里我們就不詳述。在建立了VB到Access的數(shù)據(jù)連接后,

10、就是如何把Access數(shù)據(jù)庫(kù)連接到SQL Server數(shù)據(jù)庫(kù)。在SQL Server中提供了一種數(shù)據(jù)轉(zhuǎn)換服務(wù)DTS(Data Transformation Services),負(fù)責(zé)數(shù)據(jù)的導(dǎo)入和導(dǎo)出功能。用戶可以使用導(dǎo)入向?qū)⒉煌臄?shù)據(jù)源中的數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫(kù)。在企業(yè)管理器中,展開(kāi)組并單擊用戶希望導(dǎo)入數(shù)據(jù)的服務(wù)器,從工具菜單中選擇向?qū)?,在向?qū)?duì)話框中選擇數(shù)據(jù)轉(zhuǎn)換服務(wù)中的DTS導(dǎo)入向?qū)АS嘞碌墓ぷ骶褪前凑障驅(qū)О床烤桶嗟倪M(jìn)行數(shù)據(jù)導(dǎo)入操作。最有趣的是在向?qū)е校脩艨梢栽O(shè)置定時(shí)進(jìn)行數(shù)據(jù)導(dǎo)入工作,例如可以每天的既定時(shí)間進(jìn)行,這樣我們就不需要每次都人工的去進(jìn)行導(dǎo)入操作,提高了這種方案的實(shí)用性。(2) 這種方法就

11、是直接利用ADO數(shù)據(jù)訪問(wèn)庫(kù)進(jìn)行VB到SQL Server的數(shù)據(jù)訪問(wèn)操作。與DAO和RDO等數(shù)據(jù)訪問(wèn)庫(kù)相比,ADO對(duì)象模型很簡(jiǎn)單。盡管它顯示一個(gè)層次,頂層一個(gè)對(duì)象,但許多對(duì)象都可以獨(dú)立生成。ADO的對(duì)象模型如下:PropertyErrorPropertiesErrorsConnectionCommandParametersParameterPropertiesPropertyRecordRecordsetStreamFieldFieldsPropertyFieldPropertiesFields具體各個(gè)對(duì)象和集合的作用這里就不詳細(xì)介紹了,有意的讀者可以參考相關(guān)的資料。我們實(shí)現(xiàn)用ADO在VB中連接

12、SQL Server有兩種方法。其一是用代碼來(lái)實(shí)現(xiàn),如下:Private Sub cmdOK_Click() 檢查正確的密碼 Dim rs As New ADODB.Recordset Dim con As New ADODB.ConnectionDim strCon As StringDim SqlStr As String strCon = Provider=SQLOLEDB;Data Source=local server;Initial Catalog=database1;User Id=sa;Password=; con.Open strCon 打開(kāi)數(shù)據(jù)庫(kù)連接 SqlStr = se

13、lect * from login where username= + txtUserName.Text + and password= + txtPassword.Text + rs.Open SqlStr, con, adOpenDynamic, adLockReadOnly 打開(kāi)表 If Not rs.EOF Then Me.Hide MsgBox login success! mainframe.Visible = True Else MsgBox login failed! End If rs.Close con.Close End Sub這是我們編寫的一個(gè)Sub過(guò)程,實(shí)現(xiàn)登錄對(duì)話框

14、到數(shù)據(jù)庫(kù)的連接。con是ADODB.Connection對(duì)象的一個(gè)實(shí)例,rs是ADODB.Recordset的實(shí)例,Connection對(duì)象實(shí)現(xiàn)了應(yīng)用程序到數(shù)據(jù)庫(kù)的連接,而Recordset實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)表的訪問(wèn)。另外在對(duì)話框中還有文本框user和passward作為輸入,這樣我們就可以實(shí)現(xiàn)一個(gè)完整的數(shù)據(jù)庫(kù)訪問(wèn)模塊了。另一種方法是用VB的ADO控件,要引用這個(gè)控件的話按下列步驟,單擊VB6.0的工程菜單中的引用,選上Microsoft Activex Data Objects 2.5 Library數(shù)據(jù)訪問(wèn)庫(kù),然后在控件列表中就會(huì)出現(xiàn)Adodc控件,結(jié)合利用其他的數(shù)據(jù)綁定控件,可以實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)了。其中在設(shè)置Adode控件的Connection屬性時(shí),會(huì)出現(xiàn)一個(gè)連接向?qū)?,依照向?qū)У闹甘究梢酝瓿傻絊QL Server數(shù)據(jù)庫(kù)的連接,其他的屬性設(shè)置與DAO類似。5 結(jié)論本文介紹的利用SQL Server數(shù)據(jù)庫(kù)進(jìn)行網(wǎng)上數(shù)據(jù)共享的方法均是切實(shí)可行的,各方法有不同的優(yōu)缺點(diǎn)和運(yùn)用條件。本文設(shè)計(jì)的工程系統(tǒng)必須是在數(shù)據(jù)庫(kù)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論