VisualStudio2017中使用ADO訪問數(shù)據(jù)庫的實(shí)例_第1頁
VisualStudio2017中使用ADO訪問數(shù)據(jù)庫的實(shí)例_第2頁
VisualStudio2017中使用ADO訪問數(shù)據(jù)庫的實(shí)例_第3頁
VisualStudio2017中使用ADO訪問數(shù)據(jù)庫的實(shí)例_第4頁
VisualStudio2017中使用ADO訪問數(shù)據(jù)庫的實(shí)例_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、Visual Studio 2017使用AD助問數(shù)據(jù)庫的實(shí)例Visual Studio 2017i Ji NeowinVisual Studio 2017 version 以 Visual Studio 2015 和后續(xù)的Microsoft Visual Studio 更新中的進(jìn)展為基礎(chǔ)構(gòu)建而成,為開發(fā)團(tuán)隊(duì) 提供需要的解決方案,使其接納這種轉(zhuǎn)變并開發(fā)和交付利用下一波Windows平臺(tái)創(chuàng)新(Windows 10)的新式應(yīng)用程序,同時(shí)在所有 Microsoft平臺(tái)上支持多種設(shè)備和服務(wù)。下載地址:Studio 2017 新增功能支持 Windows 10 App 開發(fā)敏捷項(xiàng)目管理(Agile Por

2、tfolio Management )版本控制輕量代碼注釋(lightweight code commenting )編程過程Visual Studio 2017 預(yù)覽版提供的工具集非常適合生成利用下一波Windows平臺(tái)創(chuàng)新(Windows 10)的新式應(yīng)用程序,同時(shí)在所有Microsoft平臺(tái)上支持設(shè)備和服務(wù)。支持在 Windows 10 中開發(fā)Windows應(yīng)用商店應(yīng)用程序,具體表現(xiàn)在對(duì)工具、控件和模板進(jìn)行 了許多更新、對(duì)于 XAML應(yīng)用程序支持新近提出的編碼UI測(cè)試、用于XAML和HTML應(yīng)用程序的UI響應(yīng)能力分析器和能耗探查 器、增強(qiáng)了用于 HTML應(yīng)用程序的內(nèi)存探查工具以及改進(jìn)了與

3、Windows應(yīng)用商店的集成。Visual Studio 2017 預(yù)覽版進(jìn)行了大量改進(jìn),可幫助您在編碼時(shí)提高工作效率并集中精力。某些功能首先在Visual Studio Power Tools擴(kuò)展中以試驗(yàn)性質(zhì)出現(xiàn),經(jīng)過改進(jìn)后才納入到Visual Studio中。新版本中內(nèi)置了多種提高工作效率的功能,如自動(dòng)補(bǔ)全方括號(hào)、使用快 捷鍵移動(dòng)整行或整塊的代碼以及行內(nèi)導(dǎo)航。止匕外,Visual Studio 2017預(yù)覽版的團(tuán)隊(duì)資源管理器增強(qiáng)了主頁設(shè)計(jì),可以更簡(jiǎn)便地導(dǎo)航到團(tuán)隊(duì) 協(xié)作功能,并可取消??繏炱鸶摹焙蜕伞?,使其顯示在一個(gè)單獨(dú)的 窗口中。在處理大型代碼文件時(shí),可能難以了解當(dāng)前所處的位置。在 V

4、isual Studio 2017預(yù)覽版中,可輕松地在兩種模式之間切換滾動(dòng)條的行為。 在欄模式中,可更直接地查看脫字號(hào)位置等注釋、更改所在位置和跟 蹤錯(cuò)誤。在圖模式下,滾動(dòng)條顯示源代碼的實(shí)時(shí)預(yù)覽,而將鼠標(biāo)懸停在代碼上即可在工具提示中更詳細(xì)地預(yù)覽這段代碼。然后單擊代碼所在位置即可導(dǎo)航到該位置2017中以ADO2017取代以前的ADO用慣ADO的程序員怎樣在2017中怎樣應(yīng)用ADO尼?本人經(jīng)過不斷的摸索,發(fā)現(xiàn)在 2017中ADO 一樣可以用,并且很好用?,F(xiàn)在結(jié)合Visual Basic2017強(qiáng)大的類開發(fā)功能,本人將ADOFF發(fā)成組件使用,效果非常理想。我使用的方法如 下:?jiǎn)?dòng)Visual Stu

5、dio2017。在新建項(xiàng)目中選擇 Visual Basic項(xiàng)目,在模板中選擇類庫,在名稱中輸入類庫名稱如DataAccess.確定后,則進(jìn)入類庫開發(fā)環(huán)境中,把 Classi換名為ADOAccess在項(xiàng)目菜單中加入引用,選擇 COM5,找到Microsoft ActionXData Object 20 Library或更高版本。COMfe項(xiàng)是 Microsoft 為了區(qū)分現(xiàn)在的2017,兼容以前的開發(fā)方式而設(shè)置的,凡是2017 之前的組件都可在COMT中可找到。在類名上面寫上Imports ; Imports ; Imports ; Imports 4條引用語句,這里分別是引用 ADO ADO勺

6、宏定義,設(shè)置空值函數(shù)的來 源。在類中定義一局部連接對(duì)象變量。Private mCnnDB As New ()然后定義連接Access 數(shù)據(jù)庫的過程. Access 數(shù)據(jù)庫用adUseClient指定,通過數(shù)據(jù)訪問方式訪問數(shù)據(jù)庫,又有多種版本,其中是最高版本,它能訪問ACCESS 200,所以這里的數(shù)據(jù)提供者指定為。指定了 0本地?cái)?shù)據(jù)庫和提供者后,就可打開一個(gè)數(shù)據(jù)庫了,用open 方法實(shí)現(xiàn)。完整的代碼如下:'' 作用 : 連接 Access 數(shù)據(jù)庫''參數(shù):DBName數(shù)據(jù)庫名Public Sub ConnAccess(ByVal DBName As String

7、)Dim strDB As String= adUseClient1111(DBName, "Admin")End Sub在ODB的設(shè)置DNS在下面的Connectionstring 中指定用戶名和密碼,最后用open方法打開。由于ODBC有用戶名和無用戶名兩者,我們必須分別實(shí)現(xiàn),借助類的函數(shù)名重載功能,我們編寫兩個(gè)同名的過程,完整的代碼如下:”作用:連接ODB啜據(jù)庫(不需指定用戶和密碼)''參數(shù):dsnNam的 ODBCSPublic Sub ConnODBC(ByVal dsnName As String)= "MSDASQL"= &

8、quot;Data Source=''" & dsnName & "''"()End Sub”作用:連接ODB啜據(jù)庫(需指定用戶和密碼)''參數(shù):dsnName ODBC,UserID 用戶名,UserPwd 用戶密碼Public Sub ConnODBC(ByVal dsnName As String, ByVal UserID AsString, ByVal UserPwd As String) = "MSDASQL"= "Data Source=''

9、" & dsnName& "''User ID=''" & UserID & "''""Password=''" & UserPwd & ()End SubSQLServer 數(shù)據(jù)庫是Microsoft 開發(fā)的一種廣泛使用的后臺(tái)數(shù)據(jù)庫。訪問SQLServer可以通過指明ODBC區(qū)動(dòng)程序?yàn)镾QLServer來實(shí)現(xiàn),即在連接字符串中要有driver=SQL Server, 由于它是后臺(tái)數(shù)據(jù)庫, 所以必須指明SQLSer

10、ver 所在的計(jì)算機(jī)名,通常把它稱為服務(wù)器,下面的ServerName就說明這點(diǎn),然后指明是連接哪個(gè)數(shù)據(jù)庫。其它的類似上面的ODBCSQLServer的用戶分為 WINNT和授權(quán)用戶,WINNT用戶是不需要指定用戶名和密碼的超級(jí)用戶,否則要指明用戶名和密碼,這決定于SQLServer 數(shù)據(jù)庫管理員,在此不作詳細(xì)說明,完整的代碼如下:'' 作用 : 連接 SQL Server 數(shù)據(jù)庫''參數(shù):ServerName服務(wù)器名,DBNam吸據(jù)庫名Public Sub ConnSQLServer(ByVal ServerName As String, ByValDBNam

11、e As String)With mCnnDB.ConnectionString = "uid=;pwd= ;driver=SQL Server;" & _server=" & ServerName & "database=" & DBName.Open()End WithEnd Sub'' 作用 : 連接 SQL Server 數(shù)據(jù)庫''參數(shù):ServerName服務(wù)器名,DBName數(shù)據(jù)庫名,UserID 用戶名, UserPwd用戶密碼Public Sub ConnSQLSe

12、rver(ByVal ServerName As String, ByVal DBNameAs String,ByVal UserID As String, ByVal UserPwd As String)With mCnnDB.ConnectionString = "uid=''" & UserID & "''pwd=''" & UserPwd&"''driver=SQL Server;" & _"server=&quo

13、t; & ServerName & _"database=" & DBName.Open()End WithEnd SubOracle 數(shù)據(jù)庫是目前最有影響的一種廣泛使用的后臺(tái)數(shù)據(jù)庫。訪問 Oracle 先指明其提供者M(jìn)SDAOR。 AOracle 與 Sql Server 不同的是它不是通過數(shù)據(jù)庫來管理的,所以它不需指明數(shù)據(jù)庫,但它連接時(shí)必須指明用戶,即使是超級(jí)用戶也如此,這是它的安全性能高于SqlServer 的理現(xiàn)之一,所以我們只須編寫一個(gè)過程。其它類似。完整的代碼如下:'' 作用 : 連接 Oracle 數(shù)據(jù)庫'

14、9;參數(shù):ServerName服務(wù)器名,DBName數(shù)據(jù)庫名,UserID 用戶名,UserPwd用戶密碼Public Sub ConnOracle(ByVal ServerName As String, ByVal UserIDAs String, ByVal UserPwd As String)With mCnnDB.Provider = "MSDAORA".ConnectionString = "User ID=''" & UserID & "''" & _"Pa

15、ssword=''" & UserPwd & "''" & _"Data Source=''" & ServerName & "''".Open()End WithEnd Sub連結(jié)數(shù)據(jù)庫后,就可以利用 ADOT充讀寫數(shù)據(jù)的函數(shù)。ADOfc訪問表時(shí)要指明其光標(biāo)類型和鎖類型,且指定其讀寫權(quán)限,這里我們編寫的是有讀寫權(quán)限的通用的函數(shù),所以我們指定光標(biāo)CursorType 為 adOpenKeyset,鎖為 adLockOpti

16、mistic , 2017需指明其來源,這是為什么開始要有"Imports "語句的原因。有了這些,就可通過執(zhí)行查詢語句來打開一個(gè)表。打開表后,我們判斷表是否為空表,不是則移動(dòng)記錄至尾后再現(xiàn)移至記錄頭(這是為了可以訪問其中每條記錄,特別是用RecordCount求記錄數(shù)時(shí)不至于返回-1的關(guān)鍵),最后返回一個(gè)記錄集,完整的代碼如下:'' 作用 : 連接表''參數(shù):TableName表名'' 返回:記錄集Public Function OpenTable(ByVal TableName) AsDim strSql As Strin

17、gDim rec Asrec = New ()= = = "SELECT * FROM " & TableName(strSql, mCnnDB) '' 打開記錄集If Not Then ()()End IfOpenTable = recEnd Function下面是擴(kuò)充上面函數(shù)的功能,可以跟據(jù)條件訪問單個(gè)表。Public Overloads Function OpenTable(ByVal TableNameAs String,ByVal strWhere As String) AsDim strSql As StringDim rec Asrec

18、 = New ()= = = "SELECT * FROM " & TableName & " where " & strWhere(strSql, mCnnDB) '' 打開記錄集If Not Then()()End IfReturn recEnd Function繼續(xù)擴(kuò)充訪問表的功能。有時(shí)要打開多個(gè)表,讀寫其中的數(shù)據(jù),我們可以通過建立查詢視圖實(shí)現(xiàn),其它類似上面的OpenTable,完整的代碼如下:'' 作用 : 連接多表'' 參數(shù): strSQL'' 返回:記錄集

19、Public Function ExecuteSQL(ByVal strSql As String) AsDim rec As New ()= = mCnnDB) '' 打開記錄集ExecuteSQL = recEnd Function下面編寫了一個(gè)用記錄集填充AxMSFlexGrid 網(wǎng)格的過程。其中函數(shù) RecordCount 是我自己編寫的求記錄集中記錄的函數(shù)。這里不能直接用ADO勺R(shí)ecordCount求得。如果記錄集是空,則退出過程。否則求出記錄集的記錄數(shù)和字段來確定AxMSFlexGrid 網(wǎng)格的行列數(shù)據(jù),然后讀出記錄集的數(shù)據(jù)直接填充到AxMSFlexGrid 網(wǎng)格

20、。 要說明的是讀出記錄集的數(shù)據(jù)時(shí)要先判斷是否為空值,由函數(shù)IsDBNull 實(shí)現(xiàn) (函數(shù)IsDBNull 來源于 . 最后記錄集應(yīng)該返回到記錄首位,否則影響了原有的記錄集,完整的代碼如下:'' 作用:用記錄集的數(shù)據(jù)填充網(wǎng)格'' 參數(shù): MSGrid 網(wǎng)格對(duì)象,rec 記錄集對(duì)象Public Sub FillMsGrid(ByVal MSGrid As , ByVal rec AsDim i, j, RecordNum As IntegerIf Then Exit SubRecordNum = RecordCount(rec)= RecordNum + 1= +

21、1For i = 0 To RecordNum - 1For j = 0 To - 1If IsDBNull(rec(j).Value) Then(i + 1, j + 1, "")Else(i + 1, j + 1, rec(j).Value)End IfNext(i + 1, 0, i)()Next()End Sub'' 作用:取記錄集的記錄數(shù)'' 參數(shù): rec 記錄集對(duì)象'' 返回:記錄集的記錄數(shù)Public Function RecordCount(ByVal rec As As IntegerDim i As In

22、tegerIf ThenRecordCount = 0Exit FunctionEnd IfWith rec.MoveFirst()Do While Not .EOFi += 1.MoveNext()Loop.MoveFirst()End WithRecordCount = iEnd Function. 下面的省略號(hào)代表上面的函數(shù)和過程??芍苯由蔀镈LL組件。方法是在2017編輯環(huán)境下選擇生 成菜單中按生成就生成了 DLL文件。然后,你可以直接調(diào)用該組件了。ImportsImportsImportsImports '' 函數(shù) IsDBNull 的來源Class ADOAccessPrivate mCnnDB As New () End Class調(diào)用上面生成的組件方法如下:在 Visual Basic2017 中建立一項(xiàng)目,在窗口Form1 中加入一AxMSFlexGrid 網(wǎng)格命名為MsGrid1, 布置如下然后引用剛建立的Dll 。方法是選擇項(xiàng)目菜單的添加引用,選擇項(xiàng)目頁,按瀏覽找到其DLL文件確定后引用完成。在Form

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論