VBNET課件第12章 章節(jié)_第1頁
VBNET課件第12章 章節(jié)_第2頁
VBNET課件第12章 章節(jié)_第3頁
VBNET課件第12章 章節(jié)_第4頁
VBNET課件第12章 章節(jié)_第5頁
已閱讀5頁,還剩47頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第12章使用VB.NET開發(fā)圖書管理系統(tǒng)【本章導(dǎo)讀】作為底層數(shù)據(jù)庫的管理軟件,數(shù)據(jù)庫管理系統(tǒng)在應(yīng)用系統(tǒng)的開發(fā)過程中起著不可或缺的作用。SQLServer2005支持所有常用的軟件開發(fā)工具,如VB.NET、VC、C#、Java等。通過高級程序設(shè)計(jì)語言與SQLServer2005之間的連接和交互,可以靈活使用數(shù)據(jù)庫中的數(shù)據(jù)以滿足不同應(yīng)用的需要。本章以圖書管理系統(tǒng)的開發(fā)為例,講解使用VB.NET/SQLServer2005開發(fā)應(yīng)用系統(tǒng)的技術(shù)?!颈菊乱c(diǎn)】ADO.NET連接數(shù)據(jù)庫的技術(shù)數(shù)據(jù)庫的設(shè)計(jì)步驟應(yīng)用程序的編制技巧12.1VB.NET連接數(shù)據(jù)庫技術(shù)MicrosoftVisualBasic.NET(VB.NET)是MicrosoftVisualBasic的更新版本,它基于.NET的框架結(jié)構(gòu),使用戶能非常容易地創(chuàng)建MicrosoftWindows操作系統(tǒng)和網(wǎng)絡(luò)應(yīng)用程序。VisualBasic是面向?qū)ο蟛⑶抑С掷^承性的語言,窗體設(shè)計(jì)器支持可視化繼承,并且包含了許多新的特性,比如自動(dòng)改變窗體大小、資源本地化以及可達(dá)性支持。另外,VB.NET直接建立在.NET的框架結(jié)構(gòu)上,因此開發(fā)人員可以充分利用所有平臺(tái)特性,也可以與其他的.NET語言交互。眾所周知,VB.NET自身并不具備對數(shù)據(jù)庫進(jìn)行操作的功能,它對數(shù)據(jù)庫的處理是通過.NETFrameWorkSDK中面向數(shù)據(jù)庫編程的類庫和微軟的MDAC來實(shí)現(xiàn)的。其中,ADO.NET是.NETFrameWorkSDK中重要的組成部分。要了解VB.NET的數(shù)據(jù)庫編程,首先要明白ADO.NET的工作原理以及相關(guān)的對象、方法、屬性。12.1.1ADO.NET簡介ADO.NET是英文ActiveXDataObjectsforthe.NETFramework的縮寫,它是為.NET框架而創(chuàng)建的,它提供對MicrosoftSQLServer、Oracle等數(shù)據(jù)源以及通過OLEDB和XML公開的數(shù)據(jù)源的一致訪問。應(yīng)用程序可以使用ADO.NET來連接到這些數(shù)據(jù)源,并檢索、操作和更新數(shù)據(jù)。1.ADO.NET的命名空間ADO.NET主要在System.Data命名空間的層次結(jié)構(gòu)中實(shí)現(xiàn),該層次結(jié)構(gòu)在物理上存在于System.Data.Dll程序集文件中。部分ADO.NET是System.Xml命名空間層次結(jié)構(gòu)的一部分。為了使用SQLServer.NET數(shù)據(jù)提供程序,必須在應(yīng)用程序中包含System.Data.SqlClient命名空間。為了使用OLEDB.NET數(shù)據(jù)提供程序,必須在應(yīng)用程序中包含System.Data.OleDb命名空間。其他的.NET數(shù)據(jù)提供程序可用于連接其他的數(shù)據(jù)源。ADO.NET中與數(shù)據(jù)相關(guān)的命名空間包括以下幾種:(1)System.Data:ADO.NET的核心,是托管應(yīng)用程序的主要數(shù)據(jù)訪問方法。(2)System.Data.Common:由.NET數(shù)據(jù)提供程序繼承或者實(shí)現(xiàn)的工具類和接口。(3)System.Data.SqlClient:SQLServer的.NET數(shù)據(jù)提供程序。(4)System.Data.OleDb:OLEDB的.NET數(shù)據(jù)提供程序。(5)System.Data.SqlTypes:為SQLServer數(shù)據(jù)類型專門提供的相關(guān)類與架構(gòu)。(6)System.Xml:提供基于標(biāo)準(zhǔn)XML的類、結(jié)構(gòu)及枚舉器。2.ADO.NET的對象模型

DataSourceExecuteReaderCommandDataReaderParameterDataSetChildRelationsParentRelationsConstraintsRowsColumnsDataTableDataRelationConstraintDataRowDataViewChildColumnsParentColumnDataColumnConnectionSelectCommandInsertCommandUpdateCommandDeleteCommandTableMappingsDataAdapterDefaultViewParameters可以使用ADO.NET中的Connection對象來建立到數(shù)據(jù)源的連接。它有ConnectionString屬性、Open和Close方法以及使用BeginTransaction方法開始事務(wù)處理的能力。在連接環(huán)境下,整個(gè)數(shù)據(jù)存取的步驟如下:(1)使用SqlConnection對象建立并開啟與數(shù)據(jù)庫的連接。(2)使用SqlCommand對象向數(shù)據(jù)庫索取所要的數(shù)據(jù)。(3)把取得的數(shù)據(jù)放在SqlDataReader對象中讀取,或者是做其他的操作。(4)在對數(shù)據(jù)庫的存取、查詢等操作完畢后,關(guān)閉SqlDataReader對象。(5)關(guān)閉SqlConnection對象。12.1.2SqlConnection對象可以使用Connection對象建立與數(shù)據(jù)庫的連接。處理SQLServer2005時(shí),使用SqlConnection對象,而處理其他數(shù)據(jù)源時(shí)使用OleDbConnection對象。SqlConnection類的構(gòu)造函數(shù)有兩種格式:PublicSubNew():初始化SqlConnection類的新實(shí)例。PublicSubNew(ByValConnectionStringAsString):用給定連接字符串初始化SqlConnection類的新實(shí)例。1.SqlConnection對象的常見屬性和方法(1)ConnectionString屬性。ConnectionString是Connection對象的關(guān)鍵屬性,它是一個(gè)字符串,用于定義正在連接的數(shù)據(jù)庫的類型、位置及其他屬性,這些屬性用分號分隔。ConnectionString常見的屬性及意義如表12-1所示。屬性意義Provider指定OLEDB提供程序的名稱DataSource指定數(shù)據(jù)庫的位置,既可以是Access數(shù)據(jù)庫的路徑,也可以是SQLServer或Oracle數(shù)據(jù)庫所在的計(jì)算機(jī)名UserID訪問數(shù)據(jù)庫的有效賬戶Password訪問數(shù)據(jù)庫的有效賬戶的密碼InitialCatalog當(dāng)連接SQLServer或Oracle數(shù)據(jù)庫時(shí),它指定數(shù)據(jù)庫的名稱(2)ConnectionTimeout屬性。ConnectionTimeout屬性是只讀的,可以利用它來取得嘗試建立連接的等待時(shí)間,默認(rèn)是15s。(3)Database屬性。Database屬性是只讀的,返回當(dāng)前所使用的數(shù)據(jù)庫名稱。(4)DataSource屬性。DataSource屬性是只讀的,返回對象所要連接的SQLServer實(shí)例的名稱。(5)State屬性。State屬性是只讀的,可以使用它取得連接的當(dāng)前狀態(tài)。如果連接當(dāng)前是關(guān)閉的,State屬性將會(huì)返回0;如果連接當(dāng)前是打開的,State屬性將會(huì)返回1。連接對象的常用方法是Open()和Close()??梢允褂肙pen方法來打開連接,使用Close方法關(guān)閉連接。2.SqlConnection對象使用實(shí)例當(dāng)使用SqlConnection來連接SQLServer2005時(shí),要首先在程序中包含導(dǎo)入命名空間的語句:ImportsSystem.Data.SqlClient現(xiàn)在創(chuàng)建一個(gè)VB.NET應(yīng)用程序,完成其與SQLServer2005的連接。設(shè)計(jì)步驟如下:(1)從“開始”菜單的“程序”中選擇VisualStudio2005,選擇VisualBasic開發(fā)環(huán)境設(shè)置,進(jìn)入開發(fā)軟件界面。新建一個(gè)Windows應(yīng)用程序項(xiàng)目adoSql,如圖12-2所示。圖12-2(2)界面設(shè)計(jì)。在Form1窗體中添加一個(gè)Button控件,設(shè)置控件的屬性,如圖12-3所示。圖12-3(3)程序設(shè)計(jì)。在Button控件的代碼編寫窗口編寫以下代碼,完成與數(shù)據(jù)庫的連接工作。ImportsSystem.Data.SqlClientPublicClassForm1PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.ClickDimsConStringAsStringsConString="DataSource=(local);InitialCatalog=Master;IntegratedSecurity=SSPI"DimmyConnectionAsNewSqlConnectionmyConnection.ConnectionString=sConStringTrymyConnection.Open()MessageBox.Show("連接正確!")CatchexAsSqlExceptionMessageBox.Show("ex.Message!")FinallymyConnection.Close()EndTryEndSubEndClass在使用SqlConnection對象來連接SQLServer2005時(shí),對連接字符串的設(shè)置可以根據(jù)具體應(yīng)用的不同而有所不同,主要有以下幾種形式:(1)使用Windows認(rèn)證機(jī)制連接SQLServer2005數(shù)據(jù)庫,連接字符如下:DataSource=(local)'連接到本地SQLServer2005InitialCatalog=Master '把master數(shù)據(jù)庫作為默認(rèn)的數(shù)據(jù)庫IntegratedSecurity=SSPI '使用Windows的認(rèn)證機(jī)制登錄數(shù)據(jù)庫(不要求輸入賬號和密碼)(2)使用混合認(rèn)證機(jī)制連接SQLServer2005數(shù)據(jù)庫,連接字符如下:DataSource=(local) '連接到本地SQLServer2005InitialCatalog=Master '把master數(shù)據(jù)庫作為默認(rèn)的數(shù)據(jù)庫UserID=tempname '登錄數(shù)據(jù)庫的賬號名Password=xxx '登錄數(shù)據(jù)庫的密碼(3)連接網(wǎng)絡(luò)上的SQLServer2005服務(wù)器:Server=6 '連接到網(wǎng)絡(luò)上的計(jì)算機(jī)名或IP地址InitialCatalog=Master '把master數(shù)據(jù)庫作為默認(rèn)的數(shù)據(jù)庫UserID=tempname '登錄數(shù)據(jù)庫的賬號名Password=xxx '登錄數(shù)據(jù)庫的密碼(4)可視化連接。進(jìn)行可視化連接需要使用SqlConnection對象控件,VisualStudio2005默認(rèn)的工具箱中并沒有此控件,因此要首先將此控件添加到工具箱中。添加此控件的具體操作如下:1)在VisualStudio環(huán)境中,選擇“項(xiàng)目”→“添加引用(E)…”命令,如圖12-4所示。圖12-42)在打開的“添加引用”對話框中,選擇System.Data.SqlClient選項(xiàng),單擊“確定”按鈕,完成命名空間System.Data.SqlClient的引用,如圖12-5所示。圖12-53)選擇“工具”→“選擇工具箱項(xiàng)(X)…”命令,如圖12-6所示。圖12-64)在出現(xiàn)的“選擇工具箱項(xiàng)”對話框中,單擊“.NETFramework組件”選項(xiàng)卡,在列表框中選中SqlConnection控件前的復(fù)選框,單擊“確定”按鈕即可,如圖12-7所示。圖12-7經(jīng)過上述操作,在工具箱中會(huì)出現(xiàn)需要的SqlConnection控件。要使用此控件,將SqlConnection控件拖放到窗體上,在組件框中出現(xiàn)SqlConnection對象,如圖12-8所示。圖12-8設(shè)置SqlConnection對象控件的ConnectionString屬性,從下拉式列表中選擇“<新建連接…>”選項(xiàng),出現(xiàn)“添加連接”對話框,選擇所要連接的數(shù)據(jù)源、服務(wù)器名、登錄驗(yàn)證方式以及所要使用的數(shù)據(jù)庫等,如圖12-9所示。單擊“測試連接”按鈕,確認(rèn)連接成功后,單擊“確定”按鈕即可。圖12-912.1.3Command對象使用Command對象可以實(shí)現(xiàn)連接數(shù)據(jù)庫的查詢、插入、刪除、更新等各種操作。操作實(shí)現(xiàn)的方式可以使用SQL語句,也可以使用存儲(chǔ)過程。Command類的構(gòu)造函數(shù)如表12-2所示。格式功能PublicSubNew()初始化SqlCommand類的新實(shí)例PublicSubNew(ByValcmdTextAsString)初始化具有查詢文本的SqlCommand類的新實(shí)例PublicSubNew(ByValcmdTextAsString,

ByValconnectionAsXxxConnection)初始化具有查詢文本、SqlConnection和SqlCommand類的新實(shí)例PublicSubNew(ByValcmdTextAsString,

ByValconnectionAsXxxConnection,

ByValtransactionAsXxxTransaction)初始化具有查詢文本、SqlConnection和SqlTransaction的SqlCommand類的新實(shí)例1.Command對象的常用屬性和方法屬性意義Name命令對象的程序化名稱Connection獲取或設(shè)置此Command對象使用的Connection對象的名稱CommandType獲取或設(shè)置一個(gè)指示如何解釋CommandText屬性的值。該屬性是枚舉型,包括Text(SQL命令,是默認(rèn)選項(xiàng))、StoredProcedure(存儲(chǔ)過程名)、TableDirect(表名)CommandText獲取或設(shè)置要對數(shù)據(jù)源執(zhí)行的SQL語句或存儲(chǔ)過程名Parameters命令對象可以包含零個(gè)或多個(gè)參數(shù)Command對象的常用方法方法描述ExecuteScaler返回單個(gè)結(jié)果值ExecuteReader返回只讀單向DataReaderExecuteNonQuery執(zhí)行更新數(shù)據(jù)庫或更新數(shù)據(jù)庫結(jié)構(gòu)的語句。此方法只返回受影響的行數(shù)ExecuteXmlReader(SqlCommandonly)返回XML形式的結(jié)果2.Command對象操作實(shí)例使用上例建立的連接對象myConnection,來講解如何使用Command對象操作數(shù)據(jù)庫。DimstrAsStringDimmyCommandAsNewSqlCommand'建立Command對象myCommand.Connection=myCon'設(shè)置Command對象所使用的連接(1)建立數(shù)據(jù)庫操作Str="CREATEDATABASEmyDatabase"MyCommand.CommandText=str'將SQL語句賦予CommandText屬性TrymyConnection.Open()myCommand.ExecuteNonQuery()MessageBox.Show("建立數(shù)據(jù)庫成功!")CatchexAsSqlExceptionMessageBox.Show("ex.Message!")FinallymyConnection.Close()EndTry(2)建立數(shù)據(jù)表操作Str="CREATETABLEstudent(snochar(10)primarykey,snamechar(20),sagetinyint,ssexchar(10))"MyCommand.CommandText=str'將SQL語句賦予CommandText屬性TrymyConnection.Open()myCommand.ExecuteNonQuery()MessageBox.Show("建立數(shù)據(jù)表成功!")CatchexAsSqlExceptionMessageBox.Show("ex.Message!")FinallymyConnection.Close()EndTry(3)插入數(shù)據(jù)Str="INSERTINTOstudentvalues('1001','李華',20,'女')"MyCommand.CommandText=strTrymyConnection.Open()myCommand.ExecuteNonQuery()MessageBox.Show("添加數(shù)據(jù)成功!")CatchexAsSqlExceptionMessageBox.Show("ex.Message!")FinallymyConnection.Close()EndTry12.1.4DataReader對象使用DataReader對象可以從數(shù)據(jù)庫中檢索只讀、只進(jìn)的數(shù)據(jù)流。可以使用Command命令對象的ExecuteReader方法創(chuàng)建一個(gè)DataReader對象。連接對象打開后,可以使用DataReader的Read方法通過關(guān)聯(lián)的Connection對象從數(shù)據(jù)源獲得一個(gè)或多個(gè)結(jié)果集。第一次使用該方法時(shí),記錄指針隱含地指向結(jié)果集的第一條記錄。然后,每調(diào)用一次Read方法指針將自動(dòng)后移一條記錄。當(dāng)移動(dòng)到結(jié)果集的最后一條記錄時(shí),Read方法將返回一個(gè)布爾值。1.DataReader對象的常用屬性和方法屬性意義FieldCount獲取當(dāng)前行中的列數(shù)IsClosed指示數(shù)據(jù)讀取器是否已關(guān)閉,關(guān)閉則為True,否則為FalseItem獲取列的值RecordsAffected獲取執(zhí)行SQL語句所更改、插入或刪除的行數(shù)。如果沒有任何行受到影響或語句失敗,則返回0;如果執(zhí)行的是Select語句,則返回-1方法描述Read讀取當(dāng)前指針指向的記錄。如果還有記錄則為True,否則為FalseNextResult當(dāng)讀取批處理的SQL語句的結(jié)果時(shí),使數(shù)據(jù)讀取器前進(jìn)到下一個(gè)結(jié)果。如果存在多個(gè)結(jié)果集,則為True,否則為FalseClose關(guān)閉SqlDataReader對象GetName獲取指定列的名稱GetSchemaTable返回一個(gè)DataTable類型的數(shù)據(jù),它描述SqlDataReader的列元數(shù)據(jù)2.DataReader對象操作實(shí)例將上例中創(chuàng)建的學(xué)生表Student中的女生信息和男生信息分別顯示在兩個(gè)文本框中。設(shè)計(jì)步驟如下:(1)使用前面例子中的Windows應(yīng)用程序項(xiàng)目adoSql。(2)界面設(shè)計(jì)。添加一個(gè)新的窗體Form2,在其上添加兩個(gè)Label控件、兩個(gè)TextBox控件和一個(gè)Button控件。設(shè)置相應(yīng)屬性,如圖12-10所示。圖12-10(3)程序設(shè)計(jì)。在Button按鈕的代碼編輯器中編寫以下代碼:ImportsSystem.Data.SqlClientPublicClassForm2PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.ClickDimIAsIntegerDimstrInfoAsString=""DimsConStringAsStringsConString="DataSource=(local);InitialCatalog=Study;IntegratedSecurity=SSPI"DimmyConnectionAsNewSqlConnectionmyConnection.ConnectionString=sConStringDimmyCommandAsNewSqlCommandmyCommand.Connection=myCo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論