版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 西紅柿熟了課件
- 蘇教版江蘇省徐州市2023-2024學(xué)年下學(xué)期高二年級第三次檢測數(shù)學(xué)試題
- 六年級數(shù)學(xué)上冊《高頻錯題訓(xùn)練》
- 西京學(xué)院《土木工程施工》2021-2022學(xué)年第一學(xué)期期末試卷
- 2024秋期國家開放大學(xué)本科《古代小說戲曲專題》一平臺在線形考(形考任務(wù)4)試題及答案
- 2025屆江西省高三語文試題及答案
- 西京學(xué)院《大數(shù)據(jù)存儲與管理技術(shù)》2022-2023學(xué)年期末試卷
- 西華師范大學(xué)《中國宗教史》2022-2023學(xué)年第一學(xué)期期末試卷
- 圖文《黃昏》課件
- 西華師范大學(xué)《外國歷史要籍研讀》2021-2022學(xué)年第一學(xué)期期末試卷
- 物資編碼體系建設(shè)實施方案
- 市政道路施工簡要流程
- 多頭小直徑水泥土深層攪拌樁防滲墻施工方案1
- 淺析現(xiàn)代漢語中的新詞語現(xiàn)象
- 公司員工工牌規(guī)范和人員進出管理規(guī)定
- 英語口語看圖說話訓(xùn)練60667
- 生活飲用水衛(wèi)生監(jiān)督
- 設(shè)備FAT驗收通用細則
- 小學(xué)六年級語文質(zhì)量分析(課堂PPT)
- 底欄柵壩水力學(xué)計算
- (完整版)機加工作業(yè)指導(dǎo)書
評論
0/150
提交評論