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

下載本文檔

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

文檔簡介

1、Visual Studio 2017使用AD前問數(shù)據(jù)庫的實例Visual Studio 2017G NeowinVisual Studio 2017 version 以 Visual Studio 2015 和后續(xù)的 提供需要的解決方案,使其接納這種轉變并開發(fā)和交付利用下一波Windows平臺創(chuàng)新(Windows 10)的新式應用程序,同時在所有Microsoft平臺上支持多種設備和服務。下載地址:Studio 2017 新增功能支持 Windows 10 App 開發(fā)敏捷項目管理(Agile Portfolio Management )版本控制輕量代碼注釋(lightweight code

2、commenting )編程過程Visual Studio 2017 預覽版提供的工具集非常適合生成利用下一波Windows平臺創(chuàng)新(Windows 10)的新式應用程序,同時在所有Microsoft平臺上支持設備和服務。支持在 Windows 10 中開發(fā)Windows應用商店應用程序,具體表現(xiàn)在對工具、控件和模板進行 了許多更新、對于 XAML應用程序支持新近提出的編碼UI測試、用于XAML和HTML應用程序的UI響應能力分析器和能耗探查 器、增強了用于 HTML應用程序的內存探查工具以及改進了與Windows應用商店的集成。Visual Studio 2017 預覽版進行了大量改進,可幫

3、助您在編碼時提高 工作效率并集中精力。某些功能首先在Visual Studio Power Tools擴展中以試驗性質出現(xiàn),經(jīng)過改進后才納入到Visual Studio中。新版本中內置了多種提高工作效率的功能,如自動補全方括號、使用快 捷鍵移動整行或整塊的代碼以及行內導航。此外,Visual Studio 2017預覽版的團隊資源管理器增強了主頁設計,可以更簡便地導航到團隊 協(xié)作功能,并可取消停靠掛起更改”和生成”使其顯示在一個單獨的 窗口中。在處理大型代碼文件時,可能難以了解當前所處的位置。在VisualStudio 2017預覽版中,可輕松地在兩種模式之間切換滾動條的行為。 在欄模式中,可

4、更直接地查看脫字號位置等注釋、更改所在位置和跟 蹤錯誤。在圖模式下,滾動條顯示源代碼的實時預覽,而將鼠標懸停在代碼上即可在工具提示中更詳細地預覽這段代碼。然后單擊代碼所 在位置即可導航到該位置。2017中以ADO2017取代以前的ADO用慣ADO的程序員怎樣在2017中怎樣應用ADO呢?本人經(jīng)過不斷的摸索,發(fā)現(xiàn)在 2017中ADO 一樣可以用,并且很好用。現(xiàn)在結合Visual Basic2017強大的類開發(fā) 功能,本人將ADO開發(fā)成組件使用,效果非常理想。我使用的方法如 下:啟動Visual Studio2017。在新建項目中選擇 Visual Basic項目, 在模板中選擇類庫,在名稱中輸入

5、類庫名稱如 DataAccess.確定后, 則進入類庫開發(fā)環(huán)境中,把 Class1換名為ADOAccess在項目菜單中加入引用,選擇 COM頁,找至U Microsoft Actio nX Data Object 20 Library 或更高版本。COM選項是 Microsoft 為了區(qū) 分現(xiàn)在的 2017,兼容以前的開發(fā)方式而設置的,凡是 2017 之前的組 件都可在COMT中可找到。在類名上面寫上 Imports ; Impo rts ;Imports ; Imports 4 條引用語句,這里分別是引用 ADO ADC的宏定義,設置空值函數(shù)的來 源。在類中定義一局部連接對象變量。 Priv

6、ate mCnnDB As New () 然后定義連接 Access 數(shù)據(jù)庫的過程 . Access 數(shù)據(jù)庫用 adUseClient 指定,通過數(shù)據(jù)訪問方式訪問數(shù)據(jù)庫,又有多種版本,其中是最高版 本,它能訪問 ACCESS 2000 所以這里的數(shù)據(jù)提供者指定為。指定了 本地數(shù)據(jù)庫和提供者后,就可打開一個數(shù)據(jù)庫了,用 open 方法實現(xiàn)。 完整的代碼如下: 作用 : 連接 Access 數(shù)據(jù)庫 參數(shù): DBName 數(shù)據(jù)庫名Public Sub ConnAccess(ByVal DBName As String)Dim strDB As String= adUseClient(DBName,

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

8、B名,UserID 用戶名,UserPwd用戶密碼Public Sub ConnODBC(ByVal dsnName As String, ByVal UserID AsString, ByVal UserPwd As String) = MSDASQL= Data Source= & dsnName& User ID=& UserID & ;Password= & UserPwd & ()End SubSQLServer 數(shù)據(jù)庫是 Microsoft 開發(fā)的一種廣泛使用的后臺數(shù)據(jù) 庫。訪問SQLServer可以通過指明ODBC區(qū)動程序為SQLServer來實 現(xiàn),即在連接字符串中要有 dri

9、ver=SQL Server, 由于它是后臺數(shù)據(jù) 庫,所以必須指明 SQLServer 所在的計算機名,通常把它稱為服務器, 下面的ServerName就說明這點,然后指明是連接哪個數(shù)據(jù)庫。其它的 類似上面的ODBCSQLServer的用戶分為 WINNT和授權用戶,WINNT 用戶是不需要指定用戶名和密碼的超級用戶,否則要指明用戶名和密 碼,這決定于 SQLServer 數(shù)據(jù)庫管理員,在此不作詳細說明,完整的 代碼如下: 作用 : 連接 SQL Server 數(shù)據(jù)庫”參數(shù):ServerName服務器名QBName數(shù)據(jù)庫名Public Sub ConnSQLServer(ByVal Serve

10、rName As String, ByVal DBName As String)With mCnnDB .ConnectionString = uid=;pwd= ;driver=SQL Server; & _server= & ServerName & ;database= & DBName.Open()End WithEnd Sub 作用: 連接 SQL Server 數(shù)據(jù)庫參數(shù):ServerName服務器名QBName數(shù)據(jù)庫名,UserlD 用戶名,UserPwd 用戶密碼Public Sub ConnSQLServer(ByVal ServerName As String, ByVal

11、DBNameAs String,ByVal UserlD As String, ByVal UserPwd As String)With mCnnDB.ConnectionString = uid= & UserlD & ;pwd= & UserPwd &;driver=SQL Server; & _server= & ServerName & _;database= & DBName.Open()End WithEnd SubOracle 數(shù)據(jù)庫是目前最有影響的一種廣泛使用的后臺數(shù)據(jù)庫。 訪問Oracle先指明其提供者 MSDAORAOracle與Sql Server不同的是 它不是通過數(shù)據(jù)

12、庫來管理的,所以它不需指明數(shù)據(jù)庫,但它連接時必 須指明用戶,即使是超級用戶也如此,這是它的安全性能高于SqlServer 的理現(xiàn)之一,所以我們只須編寫一個過程。其它類似。完整的 代碼如下: 作用 : 連接 Oracle 數(shù)據(jù)庫參數(shù):ServerName服務器名QBName數(shù)據(jù)庫名,UserlD 用戶名,UserPwd 用戶密碼Public Sub ConnOracle(ByVal ServerName As String,ByVal UserlDAs String, ByVal UserPwd As String)With mCnnDB.Provider = MSDAORA.Connectio

13、nString = User lD= & UserlD & ; & _Password= & UserPwd & ; & _Data Source= & ServerName & .Open()End WithEnd Sub連結數(shù)據(jù)庫后,就可以利用 ADOT充讀寫數(shù)據(jù)的函數(shù)。ADO在訪問表時要指明其光標類型和鎖類型,且指定其讀寫權限,這里我們編寫的是有讀寫權限的通用的函數(shù),所以我們指定光標CursorType 為 adOpenKeyset 鎖為 adLockOptimistic , 2017需指明 其來源,這是為什么開始要有 Imports 語句的原因。有了這些,就 可通過執(zhí)行查詢語句來打開一

14、個表。打開表后,我們判斷表是否為空 表,不是則移動記錄至尾后再現(xiàn)移至記錄頭(這是為了可以訪問其中 每條記錄,特別是用RecordCount求記錄數(shù)時不至于返回-1的關鍵), 最后返回一個記錄集,完整的代碼如下: 作用: 連接表”參數(shù):TableName表名 返回:記錄集Public Function OpenTable(ByVal TableName) AsDim strSql As StringDim rec Asrec = New ()= = = SELECT * FROM & TableName(strSql, mCnnDB) 打開記錄集If Not Then ()()End IfOpe

15、nTable = recEnd Function下面是擴充上面函數(shù)的功能,可以跟據(jù)條件訪問單個表Public Overloads Function OpenTable(ByVal TableNameAs String,ByVal strWhere As String) AsDim strSql As StringDim rec Asrec = New ()= = = SELECT * FROM & TableName & where & strWhere(strSql, mCnnDB) 打開記錄集If Not Then()()End IfReturn recEnd Function繼續(xù)擴充訪問

16、表的功能。有時要打開多個表,讀寫其中的數(shù)據(jù),我們可以通過建立查詢視圖實現(xiàn),其它類似上面的OpenTable,完整的代碼如下: 作用: 連接多表 參數(shù): strSQL 返回:記錄集Public Function ExecuteSQL(ByVal strSql As String) AsDim rec As New ()= = mCnnDB) 打開記錄集ExecuteSQL = recEnd Function下面編寫了一個用記錄集填充 AxMSFlexGrid 網(wǎng)格的過程。其中函 數(shù) RecordCount 是我自己編寫的求記錄集中記錄的函數(shù)。這里不能直 接用ADC的RecordCount求得。如

17、果記錄集是空,則退出過程。否則 求出記錄集的記錄數(shù)和字段來確定 AxMSFlexGrid 網(wǎng)格的行列數(shù)據(jù),然 后讀出記錄集的數(shù)據(jù)直接填充到 AxMSFIexGrid網(wǎng)格。要說明的是讀出 記錄集的數(shù)據(jù)時要先判斷是否為空值,由函數(shù) IsDBNull 實現(xiàn)(函數(shù) IsDBNull 來源于. 最后記錄集應該返回到記錄首位,否則影響了原有的記錄集,完整的代碼如下: 作用:用記錄集的數(shù)據(jù)填充網(wǎng)格 參數(shù): MSGrid 網(wǎng)格對象, rec 記錄集對象Public Sub FillMsGrid(ByVal MSGrid As , ByVal rec As Dim i, j, RecordNum As Inte

18、gerIf Then Exit SubRecordNum = RecordCount(rec)= RecordNum + 1= + 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 記錄集對象 返回:記錄集的記錄數(shù)Public Function RecordCount(ByVal rec

19、As As Integer Dim i As IntegerIf ThenRecordCount = 0Exit FunctionEnd IfWith rec.MoveFirst()Do While Not .EOFi += 1.MoveNext()Loop.MoveFirst()End WithRecordCount = iEnd Function以上代碼編好后放在所定義的類中 . 下面的省略號代表上面的函 數(shù)和過程。可直接生成為DLL組件。方法是在2017編輯環(huán)境下選擇生 成菜單中按生成就生成了 DLL文件。然后,你可以直接調用該組件了。ImportsImportsImportsImports 函數(shù) IsDBNull 的來源Class ADOAccessPrivate mCnnDB As New ()End Class調用上面生成的組件方法如下: 在 Visual Basic2017 中建立一項 目,在窗口 Forml中加入一 AxMSFIexGrid網(wǎng)格命名為

溫馨提示

  • 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

提交評論