VB中用ADO對象動態(tài)創(chuàng)建數(shù)據(jù)庫和表_第1頁
VB中用ADO對象動態(tài)創(chuàng)建數(shù)據(jù)庫和表_第2頁
VB中用ADO對象動態(tài)創(chuàng)建數(shù)據(jù)庫和表_第3頁
VB中用ADO對象動態(tài)創(chuàng)建數(shù)據(jù)庫和表_第4頁
VB中用ADO對象動態(tài)創(chuàng)建數(shù)據(jù)庫和表_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、1: 問題的提出在Visual Basic 中,常用的數(shù)據(jù)訪問接口有下列三種:數(shù)據(jù)庫訪問對象(DAO,Data Access Object、遠(yuǎn)程數(shù)據(jù)庫對象(RDO,Remote Data Object和ActiveX 數(shù)據(jù)對象(ADO,ActiveX Data Object 。數(shù)據(jù)庫訪問技術(shù)一直在不斷進(jìn)步,而這三種接口的每一種都分別代表了該技術(shù)的不同發(fā)展階段。最新的是ADO ,它是比RDO 和DAO 更加簡單,然而更加靈活的對象模型。正因如此,越來越多的人在用VB 開發(fā)數(shù)據(jù)庫軟件時使用ADO 作為數(shù)據(jù)訪問接口。在開發(fā)過程中,我們通常的使用的方法是:先使用數(shù)據(jù)庫管理系統(tǒng)(例如:Microsoft

2、 Access或VB 中的可視化數(shù)據(jù)管理器建立好數(shù)據(jù)庫和數(shù)據(jù)表結(jié)構(gòu),然后在程序中通過使用ADODC 數(shù)據(jù)庫控件或引用ADO 對象與數(shù)據(jù)庫中的表建立連接,再通過數(shù)據(jù)庫感知控件(例如:文本框、DataGrid 等 來進(jìn)行數(shù)據(jù)庫的各種操作。在這種開發(fā)過程中,我們有時需要面對這樣一個問題:如何讓用戶在程序運(yùn)行過程中動態(tài)地建立自己所需的數(shù)據(jù)庫和數(shù)據(jù)表以提高程序的靈活性呢?在程序運(yùn)行過程中建立自己所需的數(shù)據(jù)庫和數(shù)據(jù)表,其本質(zhì)就是用代碼(或者說通過編程 來建立數(shù)據(jù)庫和數(shù)據(jù)表。眾所周知,在Foxpro 或ASP 編程中,這是很容易的一件事件。那么在VB 數(shù)據(jù)庫編程中又是怎樣來操作的呢?在VB 數(shù)據(jù)庫編程中,如

3、果使用DAO 作為數(shù)據(jù)庫訪問接口技術(shù),則可以用CreateDatabase 結(jié)合CreateTableDef 方法來實(shí)現(xiàn),目前已有不少書和雜志都講到了這種方法,本文就不再講述了;但你如果使用的是最新的數(shù)據(jù)庫訪問接口技術(shù)ADO ,你卻發(fā)現(xiàn)目前的書和雜志上沒有文章講到如何用代碼來建立數(shù)據(jù)庫和數(shù)據(jù)表的方法,可有時我們非常需要用到這種方法,下面我們就來解決這個問題。2: ADO與ADOX我們先來對ADO 和ADOX 進(jìn)行簡單的認(rèn)識。在VB6中,使用ADO 開發(fā)數(shù)據(jù)庫應(yīng)用程序時,我們要引用對象庫"Microsoft ActiveX Data Objects 2.52.1. For DDL Se

4、curity",簡稱為ADOX ,其庫文件名為是:Msadox.dll 。ADOX 是對 ADO 對象和編程模型的擴(kuò)展,它將 ADO 擴(kuò)展為包括創(chuàng)建、修改和刪除模式對象,如表格和過程。它還包括安全對象,用于維護(hù)用戶和組,以及授予和撤消對象的權(quán)限。ADOX 的對象如下表所示:對象 說明Catalog 包含描述數(shù)據(jù)源模式目錄的集合。Column 表示表、索引或關(guān)鍵字的列。Group 表示在安全數(shù)據(jù)庫內(nèi)有訪問權(quán)限的組帳號。Index 表示數(shù)據(jù)庫表中的索引。Key 表示數(shù)據(jù)庫表中的主關(guān)鍵字、外部關(guān)鍵字或唯一關(guān)鍵字。Procedure 表示存儲的過程。Table 表示數(shù)據(jù)庫表,包括列、索引和關(guān)

5、鍵字。User 表示在安全數(shù)據(jù)庫內(nèi)具有訪問權(quán)限的用戶帳號。View 表示記錄或虛擬表的過濾集。3: 在原有數(shù)據(jù)表的基礎(chǔ)上產(chǎn)生新的數(shù)據(jù)表如果僅僅是在已有的數(shù)據(jù)表的基礎(chǔ)上產(chǎn)生新的數(shù)據(jù)表,我們只要引用對象庫"Microsoft ActiveX Data Objects 2.5 Library"再利用SelectInto語句就可以了。例如:有一個名為Wage.mdb 的數(shù)據(jù)庫,數(shù)據(jù)庫中有一個名為" 工資表" 數(shù)據(jù)表,該數(shù)據(jù)表的字段有:編號、姓名、基本工資、津貼、應(yīng)發(fā)工資、扣款、實(shí)發(fā)工資等,這個表中已經(jīng)有很多的記錄?,F(xiàn)在我們把其中的實(shí)發(fā)工資大于2000的記錄篩選出

6、來組成一個新表,新表的名稱由用戶從文本框中輸入,新表中我們只要三個字段,它們是:編號、姓名、實(shí)發(fā)工資。我們用下列程序就可以實(shí)現(xiàn): (事先在窗體中添加一個文本框Text1和一個命令按鈕Command1 Dim conn As New ADODB.ConnectionDim rs As New ADODB.RecordsetDim command As New ADODB.commandPrivate Sub Command1_Click(Dim bm As StringDim sql As StringIf Text1.Text <>"" Thenbm = Tri

7、m(Text1.Textsql= "Select 編號, 姓名, 實(shí)發(fā)工資 Into " + bm + " From 工資表 Where 實(shí)發(fā)工資>2000"Set command.ActiveConnection = conncommand.CommandText = sqlcommand.ExecuteElseMsgBox "你必須輸入一個名字"End IfPrivate Sub Form_Load(Dim str As Stringstr = App.PathIf Right(str, 1 <>"&q

8、uot; Thenstr = str + ""End Ifpstr = pstr & "Persist Security Info=False;"pstr = pstr & "Data Source=" & str & "wage.mdb"conn.Open pstrrs.CursorLocation = adUseClientrs.Open "工資表", conn, adOpenKeyset, adLockPessimisticSet DataGrid1.Dat

9、aSource = rsEnd Sub當(dāng)然,我們還可以把程序設(shè)計(jì)得更好,比如:讓用戶先在窗口中任意選擇所需的字段和一些條件,然后再組合生成一個新表。但無論如何,這種操作只能在從原表的基礎(chǔ)上產(chǎn)生一個新表,不能產(chǎn)生一個數(shù)據(jù)庫文件,并且新表和原表放在同一個數(shù)據(jù)庫中。4: 建立新的數(shù)據(jù)庫和表前面講到的方法有一定的局限性,它不能讓用戶產(chǎn)生自己所需的數(shù)據(jù)庫文件,即使能產(chǎn)生數(shù)據(jù)表也只能在原有表的基礎(chǔ)上生成。我們現(xiàn)在的目的就是讓用戶利用ADO 對象在程序運(yùn)行過程中創(chuàng)建數(shù)據(jù)庫和表,就好象他利用Access 來建立數(shù)據(jù)庫和表一樣。為此,我們應(yīng)該引用對象庫"Microsoft ActiveX Data O

10、bjects 2.5 Library"和"Microsoft ADO Ext 2.1. For DDL Security"我們不妨用一個實(shí)例來說明具體的操作過程和方法。我們的實(shí)例要達(dá)到目的是:在程序運(yùn)行過程中建立一個數(shù)據(jù)庫,數(shù)據(jù)庫的名稱由用戶輸入。然后在數(shù)據(jù)庫中建立一個名為"MyTable" 的數(shù)據(jù)表,數(shù)據(jù)表中有三個字段,它們分別是:" 編號"(整數(shù)型 、 "姓名"(字符型,寬度為8 、" 住址" (字符型,寬度為50 ,接著在數(shù)據(jù)表中添加一條記錄,最后在DataGrid 控件中把記錄

11、的內(nèi)容顯示出來,并且讓用戶在DataGrid 控件中任意修改、添加記錄。首先在VB 中新建一個窗體,然后在" 工程" 菜單中引用對象庫"Microsoft ActiveX Data Objects 2.5 Library"和"Microsoft ADO Ext 2.1. For DDL Security" 。接著定義三個窗體級的對象變量和一個窗體級的字符串變量,它們的具體定義是:Dim cat As New ADOX.Catalog '不用cat 用另外一個名字也可以 Dim conn As New ADODB.Connect

12、ionDim rs As New ADODB.RecordsetDim pstr As String '定義該變量是為了后面的書寫方便為了更靈活地創(chuàng)建數(shù)據(jù)庫,我們可以在窗體中加入一個通用對話框、一個DataGrid 控件,三個命令按鈕,它們的標(biāo)題分別是:創(chuàng)建數(shù)據(jù)庫和表、查看、更新。通用對話框的作用是給用戶輸入數(shù)據(jù)庫文件名和決定數(shù)據(jù)庫的存放位置。 " 創(chuàng)建數(shù)據(jù)庫和表" 命令按鈕對應(yīng)的代碼是:Private Sub Command1_Click(Dim fm As String 'fm變量用來獲取用戶輸入的文件名CommonDialog1.Filter = &q

13、uot;MDB文件(*.mdb|*.mdb|AllFiles(*.*|*.*|" CommonDialog1.FilterIndex = 1CommonDialog1.InitDir = "D:Jthpaper"CommonDialog1.Flags = 6CommonDialog1.Action = 2If CommonDialog1.FileName = "" ThenMsgBox "你必須輸入一個文件名,請重新保存一次!"Exit SubElsefm = CommonDialog1.FileNameEnd If3.51pstr = pstr & "Data Source=" & fmcat.Create pstr '創(chuàng)建數(shù)據(jù)庫Dim tbl As New Tablecat.ActiveConnection = pstrtbl.Name = "MyTable" '表的名稱conn.Open pstrrs.CursorLoc

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論