VISUALBASIC連接數(shù)據(jù)庫綜合示例_第1頁
VISUALBASIC連接數(shù)據(jù)庫綜合示例_第2頁
VISUALBASIC連接數(shù)據(jù)庫綜合示例_第3頁
VISUALBASIC連接數(shù)據(jù)庫綜合示例_第4頁
VISUALBASIC連接數(shù)據(jù)庫綜合示例_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Visual Basic 連接數(shù)據(jù)庫綜合 +示例一、數(shù)據(jù)庫編程應用技術 -. 2 -二、數(shù)據(jù)庫控件的使用 -. 2 -1. Data 控件的使用 -. 2 -2. ADO 控件的使用 -. 3 -三、ADO對象的使用 11-1. 什么是 ADO -. 11 -2. ADO 對象的添加 -.12-3. ADO 對象的具體應用 - 12 -四、訪問 SQL Server 數(shù)據(jù)庫和數(shù)據(jù)源 - 18 -1. 怎樣連接 ODBC 數(shù)據(jù)源 - 18 -2. 連接 ODBC 數(shù)據(jù)源 -. 22 -六、常用的數(shù)據(jù)庫操作舉例 -. 27 -1. 添加數(shù)據(jù)記錄 -. 27 -2. 修改與刪除數(shù)據(jù)記錄 - 28 -

2、3. 查詢數(shù)據(jù)記錄 -. 28 -七、本章小結 -. 28 -八、程序所用到的數(shù)據(jù)庫的制作 - 28 -、數(shù)據(jù)庫編程應用技術大多數(shù)情況下, 我們在編寫應用程序時都離不開數(shù)據(jù)庫。 一個功能強大的應 用軟件需要數(shù)據(jù)庫技術的支持。 如在前面章節(jié)中講解的多媒體技術的實例中, 在 實現(xiàn)保存多媒體文件路徑的操作中, 就應用到了數(shù)據(jù)庫技術。 本章中, 我們將詳 細地向讀者講解有關數(shù)據(jù)庫處理技術方面的相關知識。主要講解的知識點有以下幾個方面。(1)使用數(shù)據(jù)庫控件操作數(shù)據(jù)庫;(2)使用 ADO 技術操作數(shù)據(jù)庫;(3)連接 SQL Server 數(shù)據(jù)庫和 ODBC 數(shù)據(jù)源的方法;(3)對數(shù)據(jù)庫的添加、刪除、修改及

3、查詢等相關的操作。二、數(shù)據(jù)庫控件的使用數(shù)據(jù)庫控件是操作數(shù)據(jù)庫的有效工具, 通過使用數(shù)據(jù)庫控件, 我們可以實現(xiàn) 連接數(shù)據(jù)庫、向數(shù)據(jù)庫中添加、 刪除以及查詢記錄信息等操作。 下面就向讀者介 紹一下 VB 6.0 中幾個重要數(shù)據(jù)庫控件的使用方法。1. Data 控件的使用如果您只是簡單地操作下數(shù)據(jù)庫, 那么最簡單的方法就是使用 Data 控件了, Data 控件的優(yōu)勢在于可以直接建立起數(shù)據(jù)源并且與文本框或列表等控件直接建 立連接,這樣就不必要再編寫大量的程序代碼, 而只是簡單地設置下控件的某些 屬性就可以操作數(shù)據(jù)庫了。那么, Data 控件都有哪些重要的屬性和方法呢?請 接著往下看?。?)Conne

4、ct屬性Co nnect屬性用于設置所要連接數(shù)據(jù)庫的類型。(2)DataBaseName屬性DataBaseName屬性用于設置Data控件的數(shù)據(jù)源,即決定Data控件連接的 數(shù)據(jù)庫名稱。(3)RecordSource屬性在使用DataBaseName屬性設置完數(shù)據(jù)源之后,還需要設置所要連接的數(shù)據(jù) 表,在連接完數(shù)據(jù)表之后, 才實現(xiàn)了與數(shù)據(jù)庫之間真正意義上的連接。 連接數(shù)據(jù) 表通過使用Data控件的RecordSource屬性來實現(xiàn)。(4)ReadOnly 屬性ReadOnly屬性具有兩個屬性,即True和False,當將該屬性設置為True時, 可以屏蔽修改數(shù)據(jù)庫內容的功能。(5)Refres

5、h 方法在 DatabaseName屬性、Read Only 屬性、Co nnect 屬性和 RecordSource屬 性 等值發(fā)生改變時,可使用Refresh方法實現(xiàn)刷新數(shù)據(jù)庫的功能,即重新打開數(shù)據(jù) 庫。( 6) UpdateControl 方法使用該方法可以將Data控件記錄集中的當前記錄填充到某個數(shù)據(jù)綁定控件中UpdateControl使用該方法可以將修改的記錄內容保存到數(shù)據(jù)庫中。( 7) Recordset在 Recordset 對象中,可以通過使用該對象的 MoveFirst 、 MoveNex 、 MovePrevious和MoveLast方法實現(xiàn)移動數(shù)據(jù)表中的記錄信息的功能。2

6、. ADO 控件的使用前面講解的Data控件只能對Access97版本的數(shù)據(jù)庫進行操作,從這一點就 可以看出, Data 控件是非常不適用的。因此,在通常情況下,很少會使用 Data 控件編寫程序。在 VB 6.0中,有一種功能強大而且使用又方便的控件,那就是 ADO 控件。通過使用 ADO 控件,我們可以連接一個本地數(shù)據(jù)庫或遠程數(shù)據(jù)庫、 打開一個指定的數(shù)據(jù)庫表或定義一個基于結構化查詢語言的查詢、 將數(shù)據(jù)字段中 的數(shù)值傳遞給數(shù)據(jù)綁定控件等數(shù)據(jù)操作。 下面就來學習一下這個功能強大的數(shù)據(jù) 控件。ADO 控件是非標準的控件,在使用時需要通過在“控件”對話框中進行添 加,具體的添加方法為:在工具箱中單

7、擊鼠標右鍵, 在彈出的快捷菜單中選擇 “部 件”命令,并在彈出的“部件”對話框中選取“ Microsoft ADO Data Control 6.0”選項,如圖 1 所示。單擊【確定】按鈕,將 ADO 控件添加到工具箱當中圖1將ADO控件添加到工具箱中在添加ADO控件之后,下面介紹ADO控件的一些重要的屬性和方法(1) BOFAction 與 EOFAction 屬性在移動數(shù)據(jù)庫中的記錄指針時,如果記錄指針移動到 BOF或EOF位置,此 時再向前或再向后移動記錄指針將會發(fā)生錯誤。 使用BOFAction和EOFAction屬 性可以指定當發(fā)生上述錯誤時,數(shù)據(jù)控件將采取什么樣的操作。(2) Co

8、nnectionString 屬性ConnectionString屬性是 ADO 控件中最重要的屬性之一。該屬性的作用是 建立數(shù)據(jù)控件與數(shù)據(jù)源之間的鏈接信息??梢允褂肅onn ectio nStri ng屬性來設置鏈接不同的數(shù)據(jù)庫和數(shù)據(jù)源。如Access數(shù)據(jù)庫和SQL Server數(shù)據(jù)源。在連接數(shù)據(jù)庫時,需要首先將 Co nn ectio nStri ng屬性設置為一個有效的鏈接 字符串。該字符串可以由“數(shù)據(jù)連接屬性”對話框中產(chǎn)生。其具體實現(xiàn)的操作步 驟如下。 在確定將ADO控件添加到工具箱的情況下,首先在窗體上添加一個ADO 控件,選中該控件,在控件的屬性窗口中找到控件的 Co nn ect

9、io nStri ng屬性,單 擊最右側的【】按鈕,將彈出ADO控件的“屬性”窗口。使用 DSN,則選擇“使用ODBC數(shù)據(jù)源名稱”單選按鈕,并從列表中選擇一個 DSN數(shù)據(jù)源;創(chuàng)建一個連接字符串,則選擇“使用連接字符串”單選按鈕,如圖 2所示。圖2 ADO控件的“屬性頁”窗口 在“屬性頁”寬口中單擊【生成】按鈕,將彈出“數(shù)據(jù)連接屬性”窗口,在該窗口中選擇要連接的數(shù)據(jù)源信息。以連接Access數(shù)據(jù)庫為例,選擇“Microsoft Jet4.0 OLE DB Provider” 選項,如圖 3所示圖3 “數(shù)據(jù)鏈接屬性”對話框窗口 單擊【下一步】按鈕,將進入“數(shù)據(jù)連接屬性”窗口中的“連接”選項卡 當中

10、,在該選項卡中的“選擇或輸入數(shù)據(jù)庫名稱”欄內直接輸入或使用右側的【】 按鈕選擇數(shù)據(jù)庫的名稱,選擇完成后單擊【確定】按鈕,如圖4所示如果不放心,可以點這里測試連接一下圖4選擇連接的數(shù)據(jù)庫名稱 單擊【確定】按鈕之后,在“屬性頁”窗口的“使用連接字符串”下面的 文本框中將會生成一個連接字符串,通過使用這個連接字符串可以與相應的數(shù)據(jù) 庫取得連接,如圖5所示也可以復制該生成的字符串作為程序代碼使用圖5生成的鏈接數(shù)據(jù)庫字符串(3)RecordSource 屬性在使用ConnectionString屬性連接完數(shù)據(jù)庫之后,接下來的任務就是連接數(shù) 據(jù)表。在ADO控件中,連接數(shù)據(jù)表使用的是 RecordSourc

11、e屬性。RecordSource 屬性用于設置要連接的數(shù)據(jù)表或者 SQL查詢語句。(4)CommandType屬性CommandType屬性用于指定的取值類型。通常在 ADO控件的屬性窗口中 可以直接設置該屬性值。RecordSource屬性具有以下幾個可選擇的屬性值。 adCmdUnknown:該屬性值為默認值,表示 CommandText屬性中的命令 類型未知。 adCmdTable表示將CommandText作為由內部生成的 SQL查詢返回的表 格名稱進行計算。 adCmdText :表示將CommandText作為命令或存儲過程調用的文本定義 進行計算。 adCmdStoreProc表

12、示將CommandText作為存儲過程名進行計算。(5)UserName屬性為了保證數(shù)據(jù)的安全性,很多數(shù)據(jù)庫都設置了密碼保護。 這樣,在訪問該數(shù) 據(jù)庫時,就需要指定該數(shù)據(jù)庫德用戶名和密碼,否則無法連接或訪問該數(shù)據(jù)庫。(6)Password屬性在連接帶密碼的數(shù)據(jù)庫時,不但需要指定連接的用戶名,還需要指定連接的密碼。指定連接的密碼是通過 Password屬性實現(xiàn)的,與 UserName屬性類似Password屬性也可以子啊ConnectionString中指定。(7) Conn ecti on Timeout 屬性ConnectionTimeout 屬性用于設置等待建立一個連接的時間,該屬性以秒為

13、單位 i ,如果連接超時,則會產(chǎn)生一個錯誤信息。( 8) AddNew 方法使用 AddNew 方法可以在 ADO 控件的記錄集中添加一條新的記錄。 在使用 該方法之后,應該給相應的哥哥字段賦值,然后調用UpdateBatch方法保存信息。(9)Delete 方法使用Delete方法可以刪除ADO控件記錄集中的一條記錄信息。移動記錄的方法在使用 ADO 控件時,可以通過使用 MoveFirst、MoveLast、MoveNext、 MovePrevious方法來移動ADO控件記錄集中的數(shù)據(jù),分別表示為移動到首記錄, 移動到最后一條記錄,移動到下一條記錄和移動到上一條記錄。Can celUpda

14、te 方法CancelUpdate方法的作用是取消ADO控件的記錄集中的添加或編輯操作, 使數(shù)據(jù)記錄恢復到修前的狀態(tài)。UpdateBatch 方法UpdateBatch 方法的作用是保存 ADO 控件記錄集中添加或編輯操作。該方法的作用恰好與CancelUpdate相反。 看示例 本示例實現(xiàn)的是在程序運行之后,在窗體的文本框中輸入相關的數(shù)據(jù)信息, 單擊【添加】按鈕可以將文本框中的數(shù)據(jù)信息保存到數(shù)據(jù)表中。 在單擊【首記錄】、 【上一條】、【下一條】和【末記錄】按鈕時可以移動數(shù)據(jù)表中的記錄信息。如圖 6。在移動到某一條記錄信息之后。單擊【刪除】按鈕可以刪除當前的記錄信息。 示例實現(xiàn)步驟如下。使坤Z

15、0崖探INK陀匸同岡 ImJ 樓加刪除首i薛下一條tool姓容吉枕長春聯(lián)系電話13677 BE9GSS耳系地毗圖6使用ADO控件連接數(shù)據(jù)庫新建一個工程,在工程中添加一個窗體 Froml,將窗體的Caption屬性設置 為“ ADO控件連接數(shù)據(jù)庫”。在“部件”對話框中分別添加 ADO控件和DataGrid表格控件,如圖7所示圖7添加ADO控件和DataGrid控件到工具箱中在窗體上添加一個ADO控件和一個DataGrid控件,將DataGrid控件的DataSource屬性設置為“ Adodcl”。在窗體上添加6個標簽控件和6個文本框控件,分別設置標簽控件的Caption 屬性,使標簽能夠表示文

16、本框在窗體上添加6個按鈕控件,分別將控件的Caption屬性設置為“添加”,“刪 除”,“首記錄”,“上一條”,“下一條”,“末記錄”。進入代碼窗口,在代碼窗口中添加如下程序代碼,實現(xiàn)顯示 Access 數(shù)據(jù)庫 中的數(shù)據(jù)表的功能添加新紀錄程序代碼如下:Private Sub Command1_Click()Adodc1.Recordset.AddNewAdodc1.Recordset.Fields(0).Value = Text1.TextAdodc1.Recordset.Fields(1).Value = Text2.TextAdodc1.Recordset.Fields(2).Value

17、= Text3.TextAdodc1.Recordset.Fields(3).Value = Text4.TextAdodc1.Recordset.Fields(4).Value = Text5.TextAdodc1.Recordset.Fields(5).Value = Text6.TextAdodc1.Recordset.UpdateBatchEnd Sub刪除程序代碼如下:Private Sub Command2_Click()On Error Resume NextAdodc1.Recordset.DeleteEnd SubPrivate Sub Command3_Click()Ado

18、dc1.Recordset.MoveFirstShowTextEnd SubPrivate Sub Command4_Click()If Adodc1.Recordset.BOF ThenMsgBox 已經(jīng)到了第一條記錄 , vbOKCancel, 提示信息 Else: Adodc1.Recordset.MovePreviousEnd IfShowTextEnd SubPrivate Sub Command5_Click()If Adodc1.Recordset.EOF ThenMsgBox 已經(jīng)到了最末一條記錄 , vbOKCancel, 提示信息 Else: Adodc1.Recordse

19、t.MoveNextEnd IfShowTextEnd SubPrivate Sub ShowText()On Error Resume NextText1.Text = Adodc1.Recordset.Fields(0).ValueText2.Text = Adodc1.Recordset.Fields(1).ValueText3.Text = Adodc1.Recordset.Fields(2).ValueText4.Text = Adodc1.Recordset.Fields(3).ValueText5.Text = Adodc1.Recordset.Fields(4).ValueTe

20、xt6.Text = Adodc1.Recordset.Fields(5).ValueEnd SubPrivate Sub Command6_Click()Adodc1.Recordset.MoveLastShowTextEnd SubPrivate Sub Form_Load()Adodc1.ConnectionString = Provider=Microsoft.Jet.OLEDB.4.0;Data Source= & App.Path & MyDatas.mdb;Persist Security Info=False Adodc1.CommandType = adCmdTextAdod

21、c1.RecordSource = select * from 員工信息 order by 編號 Adodc1.RefreshShowTextEnd Sub三、ADO 對象的使用前面講解的內容都是使用數(shù)據(jù)控件對數(shù)據(jù)表中的數(shù)據(jù)進行操作。 那么,如果 不使用數(shù)據(jù)控件是否也能操作數(shù)據(jù)表中的數(shù)據(jù)信息呢?答案是肯定的。 也可以使 用 ADO 對象來操作數(shù)據(jù)表中的數(shù)據(jù)信息,本節(jié)中我們將重點講解一下 ADO 對 象在 VB 6.0 中的具體應用。1.什么是 ADO在學習ADO對象之前,先來了解一下什么是 ADO。ADO的全稱為Active Data Objects,它包含了數(shù)據(jù)庫訪問對象 DAO、遠程數(shù)據(jù)對

22、象RDO及幾乎所有 其他數(shù)據(jù)存取方式的全部功能, 可以使用 ADO 訪問各種類型的數(shù)據(jù)庫及數(shù)據(jù)源。 ADO 具有很高的靈活性, 它可以使用相同的編程模式連接到不同的數(shù)據(jù)提供者, 因此,是當前使用最廣泛的操作數(shù)據(jù)庫技術之一, 受到廣大程序員和編程愛好者 的青睞。ADO可以用來同OLE DB Provider (數(shù)據(jù)訪問層)協(xié)同工作。 OLE DB是 個低層的數(shù)據(jù)訪問接口,通過該接口可以訪問各種數(shù)據(jù)源,與數(shù)據(jù)庫取得連接。ADO技術將所有強大的數(shù)據(jù)處理功能都封裝起來,僅僅引用它就可以執(zhí)行各種 數(shù)據(jù)操作。2.ADO對象的添加在使用ADO對象之前,需要進行一個重要的操作,那就是將 ADO對象引 用到你的

23、工程當中,具體的操作方法如下所示。(1)選擇“工程”菜單下的“引用”命令,此時將彈出“引用”對話框窗 口。(2)在“引用”對話框中選擇 “Microsoft ActiveX Data Obiects 2.8 Library”, 如圖8所示。如果列表中沒有該選項,可以選擇“ Microsoft ActiveX Data Objects 2.6 Library ”選項或更低版本的類型庫圖8引用ADO對象(3)單擊【確定】按鈕之后,ADO對象就被引用到工程當中了3. ADO對象的具體應用我們平時所說的ADO對象主要包括兩部分,即連接數(shù)據(jù)源Connection對象 和記錄集對象 Recordse,只要

24、熟練掌握了這兩種對象的使用,就可以說已經(jīng)熟 練掌握 ADO 對象的使用了。下面就一起來學習一下這兩種數(shù)據(jù)操作對象的使用 方法。(1)連接數(shù)據(jù)源Connection對象的使用Connection 對象的作用是與數(shù)據(jù)源取得會話連接,在客戶端 /服務器數(shù)據(jù)庫 系統(tǒng)當中,Conn ection對象可以看作是到服務器的實際網(wǎng)絡連接。( 2)記錄集對象 RecordsetRecordset 對象用于返回查詢的記錄集和記錄中的游標,即返回來自基本表 或命令執(zhí)行結果的記錄全集。在 ADO對象當中,通過使用 Recordset對象可以 實現(xiàn)添加、刪除、修改和查詢等對數(shù)據(jù)庫的基本操作。為了和 ADO 控件連接數(shù)據(jù)

25、庫形成對比, 同樣功能的軟件這次用 ADO 對象 連接,注意對比哦,否則就白忙活了! 看示例 本示例實現(xiàn)的是在程序運行之后,在窗體的文本框中輸入相關的數(shù)據(jù)信息, 單擊【保存】按鈕可以將文本框中的數(shù)據(jù)信息保存到數(shù)據(jù)表中。在單擊【添加】 【刪除】、【修改】、【首記錄】、【上一條】、【下一條】和【末記錄】按鈕可實現(xiàn)相 應的功能。如圖 9 所示iii ADO對象連養(yǎng)數(shù)掘庫編號1姓名1年齡 1皤貫膚系電詁 聯(lián)系覽址I編號姓名年齡|籍貫聯(lián)系電話聯(lián)系地址“11001張丹36吉林長春市南關區(qū)21002李娜32吉林遼源1396895779長春市一道居31003王紅35吉林顋138574

26、52368長春市綠園區(qū)41004趙剛30吉林長春市一道區(qū)51005李朋29吉林長春帀南關送 v添加刪I除修改 保存 百記錄 上一條 下一條 耒記錄當前數(shù)據(jù)表中共有5條記錄信息,當前記求位置為第1條記錄圖9程序運行畫面具體實現(xiàn)步驟如下:新建一個工程,在工程中添加一個窗口 Forml,將窗口的Caption屬性設置 為“ ADO對象連接數(shù)據(jù)庫”。在【工程】-【引用】對話框中將ADO對象引用到工程中。具體步驟如上, 這里不復述在窗體中引用并添加一個 MSHFIexGrid控件。如圖10圖10弓I用MSHFIexGrid控件到工具面板在窗體中添加六個

27、標簽控件和六個文本框控件,如圖9分別設置標簽控件的Caption 屬性。在窗體中添加八個按鈕控件,分別將控件的Caption屬性設置為“添加”,“刪 除”,“修改”,“保存”,“首記錄”,“上一條”,“下一條”和“末記錄”。在窗體中再添加一個標簽控件,用于顯示當前記錄的位置信息。進入代碼窗口,在窗口添加如下程序代碼:Dim co nn As New ADODB.Co nn ectio n定義一個數(shù)據(jù)連接Dim rs As New ADODB.Recordset 定義一個記錄集Private Sub Comma nd1_Click()On Error Resume NextText1.Text

28、=Text2.Text =Text3.Text =Text4.Text =Text5.Text =Text6.Text =Text1.SetFocusEnd SubPrivate Sub Comma nd2_Click()On Error Resume Next rs.DeleteSet MSHFlexGrid1.DataSource = rsEnd SubPrivate Sub Command3_Click()On Error Resume Nextm = MsgBox( 確定修改嗎? , vbOKCancel + vbInformation, 提示信息 ) If m = vbOK Then

29、rs.Fields(0).Value = Text1.Textrs.Fields(1).Value = Text2.Textrs.Fields(2).Value = Text3.Textrs.Fields(3).Value = Text4.Textrs.Fields(4).Value = Text5.Textrs.Fields(5).Value = Text6.Textrs.UpdateBatchSet MSHFlexGrid1.DataSource = rsEnd IfEnd SubPrivate Sub Command4_Click() On Error Resume Next rs.Ad

30、dNew rs.Fields(0).Value = Text1.Textrs.Fields(1).Value = Text2.Text rs.Fields(2).Value = Text3.Text rs.Fields(3).Value = Text4.Text rs.Fields(4).Value = Text5.Text rs.Fields(5).Value = Text6.Text rs.UpdateBatchSet MSHFlexGrid1.DataSource = rs End SubPrivate Sub Command5_Click()On Error Resume NextIf

31、 rs.EOF ThenMsgBox 已到首數(shù)據(jù) , vbCritical + vbOKCancel, 提示信息 Else rs.MoveFirstShowinfoEnd IfEnd SubPrivate Sub Command6_Click()On Error Resume NextIf rs.EOF ThenMsgBox 已到末數(shù)據(jù)! , vbCritical + vbOKCancel, 提示信息 Elsers.MoveNextShowinfoEnd IfEnd SubPrivate Sub Command7_Click()If rs.BOF ThenMsgBox 已到首數(shù)據(jù)! , vbO

32、KCancel + vbCritical, 提示信息 Elsers.MovePreviousShowinfoEnd IfEnd SubPrivate Sub Command8_Click() On Error Resume Next rs.MoveLastShowinfoEnd SubPrivate Sub Form_Load()On Error Resume NextDim i As Integerconn.Open Provider=Microsoft.Jet.OLEDB.4.0;Data Source= + App.Path MyDatas.mdb;Persist Security In

33、fo=Falsers.Open 員工信息 , conn, adOpenKeyset, adLockOptimisticSet MSHFlexGrid1.DataSource = rs設置表格大小For i = 0 To 4MSHFlexGrid1.ColWidth(i) = 1200Next iMSHFlexGrid1.ColWidth(5) = 1800MSHFlexGrid1.ColWidth(6) = 1800For i = 0 To MSHFlexGrid1.Rows - 1MSHFlexGrid1.RowHeight(i) = 400Next i設置表格行表頭s$ = ;|1|2|3

34、|4|5|MSHFlexGrid1.FormatString = s$顯示數(shù)據(jù)表中的記錄條數(shù)信息Label7.Caption = 當前數(shù)據(jù)表中共有 + Str(rs.RecordCount) + 條記錄信息 ,當前記錄位 置為 第 + Str(rs.AbsolutePosition) + 條記錄 End SubPrivate Function Showinfo()將當前記錄信息賦值于文本框On Error Resume NextText1.Text = rs.Fields(0).ValueText2.Text = rs.Fields(1).ValueText3.Text = rs.Fields

35、(2).ValueText4.Text = rs.Fields(3).ValueText5.Text = rs.Fields(4).ValueText6.Text = rs.Fields(5).ValueLabel7.Caption = 當前數(shù)據(jù)表中共有 + Str(rs.RecordCount) + 條記錄信息 , 當前記錄位置 為 第 + Str(rs.AbsolutePosition)End Function四、訪問 SQL Server 數(shù)據(jù)庫和數(shù)據(jù)源在學習了前面的相關內容之后,讀者可能完全掌握了對 Access 數(shù)據(jù)庫的訪 問及其相關的一些操作。但是,在開發(fā)應用程序的過程中,不僅會用

36、到 Access 數(shù)據(jù)庫,通常還會用到與 SQL Server 數(shù)據(jù)庫和數(shù)據(jù)源之間的連接和操作。本節(jié) 的目的就是教會讀者學習這方面的相關內容。怎樣連接 SQL Server 數(shù)據(jù)庫將連接SQL Server數(shù)據(jù)庫與連接Access數(shù)據(jù)庫進行比較,除了連接字符串 不同之外,其余的如添加記錄、 刪除記錄、 修改記錄和查詢記錄的方法和程序代 碼都基本相同。因此,在這里只介紹一下如何與 SQL Server數(shù)據(jù)庫取得連接, 至于對SQL Server數(shù)據(jù)庫的其他操作,讀者只要參照對 Access數(shù)據(jù)庫的相關操 作就可以了。1.怎樣連接 ODBC 數(shù)據(jù)源在對數(shù)據(jù)庫進行操作時,我們可以通過連接字符串連接A

37、ccess數(shù)據(jù)庫和SQL Server數(shù)據(jù)庫,也可以通過ODBC數(shù)據(jù)源連接各種類型的數(shù)據(jù)庫。)創(chuàng)建 ODBC 數(shù)據(jù)源在連接 ODBC 數(shù)據(jù)源之前需要首先創(chuàng)建數(shù)據(jù)源, 如何創(chuàng)建 ODBC 數(shù)據(jù)源呢?可以按照如下步驟進行操作選擇【開始】-【控制面板】-【性能和維護】-【管理工具】-【數(shù)據(jù)源(ODBC)】命令,然后在“ODBC數(shù)據(jù)源管理器”對話框窗口中選擇“文件DSN如圖11所示圖11 ODBC數(shù)據(jù)源管理器對話框窗口在“文件DSN”選項卡中,單擊【添加】按鈕,將彈出“創(chuàng)建新數(shù)據(jù)源” 對話框窗口。在該對話框中的列表中可以選擇連接不同類型數(shù)據(jù)庫的啟動程序。 這里創(chuàng)建一個連接SQL Server數(shù)據(jù)庫的數(shù)

38、據(jù)源。因此選擇列表中的“SQL Serve” 選項,如圖12所示。圖12選擇創(chuàng)建新數(shù)據(jù)源的驅動程序13,單擊下一步按鈕,在彈出的文本框中輸入創(chuàng)建新數(shù)據(jù)源的名稱,如圖單擊下一步創(chuàng)澤新數(shù)據(jù)源輸入數(shù)據(jù)源的名稱別覽退)C上 |下取消 |圖13輸入創(chuàng)建數(shù)據(jù)源的名稱出現(xiàn)如圖14創(chuàng)建新?lián)Q源爻件數(shù)搓源丈件名:MTJDBC 程厚:SQL G erwer擁網(wǎng)才配置的數(shù)上一步也;i取消圖14剛才配置的數(shù)據(jù)源單擊【完成】出現(xiàn)圖15。在窗口中的“服務器”列表框中選擇 SQL服務器名稱,這里選擇“ Local”圖15選擇SQL服務器名稱在此列表 中選擇連 接的SQL 服務器的 名稱,選 擇 Local 表示連接 的是本地

39、 數(shù)據(jù)庫L繼續(xù)單擊【下一步】按鈕,在彈出的窗口選擇登陸ID的登錄方式(通常選擇默認的方式,不用改變),如圖16圖16選擇登陸ID的登錄方式單擊【下一步】按鈕,此時將彈出選擇連接 SQL數(shù)據(jù)庫名稱的窗口,在該 窗口中的“更改默認的數(shù)據(jù)庫為”列表中選擇數(shù)據(jù)源說連接的SQL數(shù)據(jù)庫名稱, 這里選擇“ DB_YGXX ”數(shù)據(jù)庫。單擊【下一步】,在彈出的窗口中單擊【完成】按鈕,一個新的文件數(shù)據(jù)源 MY_ODBC創(chuàng)建完成。2.連接ODBC數(shù)據(jù)源在數(shù)據(jù)源創(chuàng)建完成之后,在應用程序中可以通過該數(shù)據(jù)源連接數(shù)據(jù)庫。下面通過一個具體的示例來講解如何通過 ODBC數(shù)據(jù)源連接數(shù)據(jù)庫。vb連接Access數(shù)據(jù)庫的模塊以及使用

40、實例我覺得vb的模塊與c的頭文件有異曲同工之妙,說的不對不要罵我哈 都 是在里面加載公共函數(shù)供外部調用??词纠蜁靼琢嗽谶@里演示一個,我把“ ADO對象連接數(shù)據(jù)庫”的示例改了一下,很簡單的, Follow me單擊【工程】選擇【添加模塊】或者在窗體右鍵選擇【添加】-【添加模塊】圖17添加模塊由于是改的,所以直接拿那個示例來用就可以了,具體操作步驟就不復述了 看代碼模塊(Modulel)代碼(關閉代碼沒有用到,僅供參考學習):Public conn As New ADODB.Co nn ectio n定義一個數(shù)據(jù)連接Public rs As New ADODB.Recordset定義一個記錄集

41、Public addFlag As Boolean 判斷是否連接上了數(shù)據(jù)庫打開數(shù)據(jù)庫Public Fun cti on ope nconn()On Error Resume Nextconn .Co nn ectio nStri ng = Provider=Microsoft.Jet.OLEDB.4.0;Data Source= + App.Path +MyDatas.mdb;Persist Security In fo=Falseconn. Ope nope nconn = TrueIf conn. State = 1 The naddFlag = TrueEnd IfEnd Functio

42、n 關閉數(shù)據(jù)庫,釋放連接Public Sub cloC n()On Error Resume NextIf conn .State adStateClosed Then conn.CloseSet conn = NothingEnd Sub 打開對象集Public Sub openrs(ByVal strsql As String) 以下兩句等同rs.Open strsql, conn, adOpenKeyset, adLockOptimistic With rs.ActiveConnection = conn .CursorLocation = adUseClient .CursorType

43、 = adOpenKeyset .LockType = adLockOptimistic .Open strsqlEnd WithEnd Sub關閉對象集Public Sub closers() On Error Resume Next If rs.State adStateClosed Then rs.CloseSet rs = NothingEnd Sub? Form1 代碼:Private Sub Command1_Click() On Error Resume NextText1.Text = Text2.Text = Text3.Text = Text4.Text = Text5.T

44、ext = Text6.Text = Text1.SetFocusEnd SubPrivate Sub Command2_Click()On Error Resume Next rs.DeleteSet MSHFlexGrid1.DataSource = rsEnd SubPrivate Sub Command3_Click()On Error Resume Nextm = MsgBox( 確定修改嗎? , vbOKCancel + vbInformation, 提示信息 ) If m = vbOK Thenrs.Fields(0).Value = Text1.Textrs.Fields(1)

45、.Value = Text2.Textrs.Fields(2).Value = Text3.Textrs.Fields(3).Value = Text4.Textrs.Fields(4).Value = Text5.Textrs.Fields(5).Value = Text6.Textrs.UpdateBatchSet MSHFlexGrid1.DataSource = rsEnd IfEnd SubPrivate Sub Command4_Click()On Error Resume Nextrs.AddNewrs.Fields(0).Value = Text1.Textrs.Fields(

46、1).Value = Text2.Textrs.Fields(2).Value = Text3.Textrs.Fields(3).Value = Text4.Textrs.Fields(4).Value = Text5.Textrs.Fields(5).Value = Text6.Textrs.UpdateBatchSet MSHFlexGrid1.DataSource = rsEnd SubPrivate Sub Command5_Click()On Error Resume NextIf rs.EOF ThenMsgBox 已到首數(shù)據(jù) , vbCritical + vbOKCancel,

47、提示信息 Elsers.MoveFirstCall ShowinfoEnd IfEnd SubPrivate Sub Command6_Click()On Error Resume NextIf rs.EOF ThenMsgBox 已到末數(shù)據(jù)! , vbCritical + vbOKCancel, 提示信息 Elsers.MoveNext Call Showinfo End If End SubPrivate Sub Command7_Click()If rs.BOF ThenMsgBox 已到首數(shù)據(jù)! , vbOKCancel + vbCritical, 提示信息 Elsers.MovePr

48、eviousShowinfoEnd IfEnd SubPrivate Function Showinfo() 將當前記錄信息賦值于文本框 On Error Resume Next Text1.Text = rs.Fields(0).Value Text2.Text = rs.Fields(1).Value Text3.Text = rs.Fields(2).Value Text4.Text = rs.Fields(3).Value Text5.Text = rs.Fields(4).Value Text6.Text = rs.Fields(5).ValueLabel7.Caption = 當前

49、數(shù)據(jù)表中共有 + Str(rs.RecordCount) + 條記錄信息 , 當前記錄位置 為 第 + Str(rs.AbsolutePosition)End FunctionPrivate Sub Command8_Click() On Error Resume Next rs.MoveLastShowinfoEnd SubPrivate Sub Form_Load() On Error Resume Next Dim i As Integer openconn openrs (員工信息 ) Set MSHFlexGrid1.DataSource = rs 設置表格大小For i = 0 To 4MSHFlexGrid1.ColWidth(i) =

溫馨提示

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

評論

0/150

提交評論