在VB6.0數(shù)據(jù)庫程序開發(fā)中使用ADO 和SQL_第1頁
在VB6.0數(shù)據(jù)庫程序開發(fā)中使用ADO 和SQL_第2頁
在VB6.0數(shù)據(jù)庫程序開發(fā)中使用ADO 和SQL_第3頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

在VB6.0數(shù)據(jù)庫程序開發(fā)中使用ADO和SQL

摘要:本文用實例說明了通過ADO處理數(shù)據(jù)庫表中數(shù)據(jù)的實現(xiàn)方法,并介紹了利用SQL語句實現(xiàn)對數(shù)據(jù)作數(shù)學(xué)統(tǒng)計的方法.關(guān)鍵詞:ADOSQL數(shù)據(jù)庫1.引言

在VB的應(yīng)用程序開發(fā)中,訪問數(shù)據(jù)庫的方法可歸納為兩種。一種是通過DAO或ADO的數(shù)據(jù)源對表中的數(shù)據(jù)進行直接操作,另一種是通過標(biāo)準(zhǔn)的SQL語句結(jié)合Connection對象對數(shù)據(jù)庫中的數(shù)據(jù)進行操作,對表中的數(shù)據(jù)進行檢索和統(tǒng)計。DAO是VisualBasic5.0使用的數(shù)據(jù)訪問技術(shù),它在用于訪問MDB文件格式的數(shù)據(jù)庫時有較高的效率,但訪問如Oracle或SQLServer這樣的非MDB文件格式的數(shù)據(jù)庫時,因它基于Access/Jet數(shù)據(jù)庫引擎,訪問速度會大大降低。所以VisualBasic6.0推出了ADO技術(shù)。ADO中文含意是ActiveX數(shù)據(jù)對象(ActiveXDataObject),它是一種面向?qū)ο蟮慕涌?。ADO訪問數(shù)據(jù)庫是通過訪問OLEDB使用程序和OLEDB供給程序來進行的,它在封裝OLEDB的程序中使用了大量的COM接口,是一種高層的訪問技術(shù)。它在繼承OLEDB的同時,大大簡化了OLEDB的操作。此外,ADO技術(shù)可以以ActiveX控件的形式出現(xiàn),被廣泛應(yīng)用于MicrosoftActiveX頁、VisualC++和VisualBasic的編程。SQL是管理關(guān)系數(shù)據(jù)庫系統(tǒng)的標(biāo)準(zhǔn)語言。每一種關(guān)系數(shù)據(jù)庫如Access、SQLServer、Oracle等都有它自己特有的SQL語言,但它們都支持像select、insert、update、delete、create、drop等標(biāo)準(zhǔn)語句來完成幾乎所有的對數(shù)據(jù)庫的操作.本文就ADO和SQL的用法做一些探討。2.開發(fā)原型我們?yōu)橛嬎銠C產(chǎn)品經(jīng)銷商開發(fā)一個進銷存的程序。用MSAccess數(shù)據(jù)庫,創(chuàng)建的數(shù)據(jù)庫名叫ware.mdb.在這個數(shù)據(jù)庫中,建立表1,表2,表3,表4。表1

商品明細表:

wareDetail商品編號

商品名稱

單價

廠商

庫存wareID(ch10)

wareName(ch30)

wPrice(Money)

manifest(ch40)

numInLib(int)表2

流水賬wAccount商品編號

進貨數(shù)

出貨數(shù)

日期wareID(ch10)

wQuantity(int)

wSold(int)

wDate(date)表3庫存表wLib總庫存數(shù)

總庫存金額TotalNum(int)

TotalMoney(Money)表4臨時表wInOut進貨數(shù)

出貨數(shù)Quantity,

Sold3.ADO的使用方法.ADO2.0存在于VisualBasic6.0的兩個獨立的庫中第一個稱為ADODB,在References對話框中的名字是MicrosoftActiveXDataObjects2.0Library在這個庫中包含了所有的ADO對象。對于那些并不需要太多加強的ADO資源工程,應(yīng)該使用ADOR庫。在References對話框中這個庫稱為MicrosoftActiveXDataObjectsRecordset2.1Library這個庫只包含對Recordsets的支持。VisualBASIC6.0通過ADO控件和Recordset對象兩種方法來使用ADO.下面介紹一下Recordset對象的使用方法.在visualbasic中加入如下代碼:

dimmyConnectstrasstrng

dimmyRecordsetasNewADODB.recordsetmyConnectstr="PROVIDER=Microsoft.Jet.OLEDB.4.0;DataSource="&App.Path&"\ware.mdb;PersistSecurityInfo=False"myRecordset.CoursorLocation=AduseClientmyRecordset.Open“select*fromwDetail”,myConnectstr,adOpenKeyset,adLockPessimistic這樣就可以對商品明細表追加紀(jì)錄:myRecordset.AddNewmyRecordset.Fields("wareID")="000001"myRecordset.Fields("wareName")="Switch3500"myRecordset.Fields("wPrice")=4350myRecordset.Fields("wManufect")="Cisco"myRecordset.Update獲取表中的紀(jì)錄數(shù):recordcnt=myRecordset.Recordcount移動紀(jì)錄指針myRecordset.MoveFirst‘移動到表的第一條紀(jì)錄myRecordset.MoveLast‘移動到表的最后一條紀(jì)錄myRecordset.MovePrevious

‘移動到表的上一條紀(jì)錄myRecordset.MoveNext‘移動到表的下一條紀(jì)錄刪除當(dāng)前紀(jì)錄myRecordset.Delete最后關(guān)閉紀(jì)錄集,釋放紀(jì)錄集變量myRecordset.CloseSetmyRecordset=Nothing4.SQL的使用

上面所用的方法,只適合于對單個表的簡單操作。如果是對表的數(shù)據(jù)作復(fù)雜查詢,或數(shù)據(jù)統(tǒng)計,用上述方法就非常不方便。一般情況下我們用SQL語言結(jié)合Connection對象實現(xiàn)SQL語句中最常用的是Select語句。該語句用來從數(shù)據(jù)庫表中檢索數(shù)據(jù)或者完成其他一些功能。為了使用這條語句你必須知道你要檢索的字段名稱,或者直接用星號來檢索所有字段。下面是Select語句的基本語法:

SELECT[ALL|DISTINCT][TOPxx[PERCENT]]select_list

FROMtable_name

[WHERE{search_criteria|join_criteria}[{AND|ORsearch_criteria}]]

[GROUPBY[ALL]aggregate_free_expression[,aggregate_free_expression….]]

[HAVINGsearch_conditions]

[ORDERBY{field_list}[ASC|DESC]]其中:ALL定義每一行都將返回,包括重復(fù)紀(jì)錄。DISTINCT定義只返回不重復(fù)的紀(jì)錄。TOP定義你需要的得到的返回紀(jì)錄的前幾條。在數(shù)字xx后用PERCENT來說明只返回前面百分之幾條紀(jì)錄。select_list列出要檢索的表的列名。table_name列出要檢索的表名search_criteria列出要檢索的表的列名join_criteria列出一個表中用來和另一個表的某個列連接的列名aggregate_free_expression是一個不包含聚集的表達式。Field_list列出了數(shù)據(jù)排序的順序ASC定義按照升序排序DESC定義按照降序排序。下面我們來舉例說明。你希望檢索商品名細表中的信息可使用如下語句:

SELECT*FROMwaredetial關(guān)鍵字ORDERBY要求列名以確定按哪一列排序。這里我們選定按wareID排序,如果你希望按列wareID的字母順序排列可采用下面的代碼:SELECTwareIDFROMwareDetialORDERBYwareID默認是按升序排列如果想按降序排列可用如下代碼:SELECTwareIDFROMwareDetialORDERBYwareIDDESC如果你想選擇多列,使用下面的語句SELECTwareID,wareNameFROMwareDetialORDERBYwareID用WHERE關(guān)鍵字來限制選擇范圍。如果你想選擇wareDetial中wareName列值為“cisco6000”的行。你可用下面的代碼實現(xiàn):

SELECT*FROMwareDetialWHEREwareName=”cisco6000”O(jiān)RDERBYwareID除了SELECT語句,標(biāo)準(zhǔn)SQL語句還有INSERTUPDATEDELETE等,在此不再作具體介紹.實際的應(yīng)用經(jīng)常要對表中的某列或多列數(shù)據(jù)進行數(shù)學(xué)運算,這就需要如COUNT(),SUM(),AVG(),MAX(),MIN()等數(shù)學(xué)函數(shù)。下面對這些函數(shù)的用法作具體說明。先建立一個與數(shù)據(jù)庫的連接dimmyConnectstrasstrngdimmyCntasNewADODB.connectionmyConnectstr="PROVIDER=Microsoft.Jet.OLEDB.4.0;DataSource="&App.Path&"\ware.mdb;PersistSecurityInfo=False"myCnt.OpenmyConnectstr若要產(chǎn)生某種商品的總進貨數(shù)以及總出貨數(shù)可用以下代碼:exeStr=”insertintowInOutselectsum(wQuantity)asQuantity,sum(wSold)asSoldfromwAccountwherewareID=‘000001’”若要產(chǎn)生庫存的總數(shù)以及總庫存金額可用以下代碼:exeStr="insertintowLibselectsum(numInlib)astotalNu

溫馨提示

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

評論

0/150

提交評論