Visual Basic.NET程序設計課件第12章_第1頁
Visual Basic.NET程序設計課件第12章_第2頁
Visual Basic.NET程序設計課件第12章_第3頁
Visual Basic.NET程序設計課件第12章_第4頁
Visual Basic.NET程序設計課件第12章_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第12章數(shù)據(jù)庫應用主編:夏敏捷本章重點關系數(shù)據(jù)庫的基本概念關系數(shù)據(jù)庫的四個常用SQL語句ADO.NET的體系結構及存取模式Connection對象、Command對象、DataReader對象、DataAdapter對象及DataSet對象的使用方法簡單和復雜數(shù)據(jù)綁定目錄12.1數(shù)據(jù)庫的基本概念12.2ADO.NET簡介12.3ADO.NET對象及其編程12.4應用案例12.1數(shù)據(jù)庫的基本概念12.1.1關系數(shù)據(jù)庫與二維表12.1.2關系數(shù)據(jù)庫的有關概念12.1.3關系數(shù)據(jù)庫的操作12.1.1關系數(shù)據(jù)庫與二維表一個二維表就是一個關系,二維表的表名就是關系名。表的每一列稱為一個字段(也稱為屬性),表的每一行為一條記錄(也稱為元組),它是一組字段信息的集合每一個關系數(shù)據(jù)庫由一個或多個數(shù)據(jù)表組成,各數(shù)據(jù)表之間可以建立相互聯(lián)系。關系數(shù)據(jù)庫的特點如下:

1.關系(表)中的每一個字段(屬性)必須是不可再分的數(shù)據(jù)項,即不能出現(xiàn)組合項。2.同一個表中不能出現(xiàn)相同的字段名(屬性名),即不能出現(xiàn)相同的列。3.同一個表中同一列的數(shù)據(jù)類型必須相同。4.同一個表中不能出現(xiàn)相同的記錄(元組),即不能出現(xiàn)相同的行。5.同一個表中記錄的次序和字段的次序可以任意交換,不影響實際存儲的數(shù)據(jù)。12.1.2關系數(shù)據(jù)庫的有關概念1、表的結構數(shù)據(jù)表的結構是由字段決定的。2、主關鍵字用來唯一標識表中記錄的字段或字段的組合。3、外部關鍵字用來與另一個關系進行連接的字段,且是另一個關系中的主關鍵字。12.1.3關系數(shù)據(jù)庫的操作1/31、查詢語句SELECTSELECT語句通常用來查詢數(shù)據(jù),它從數(shù)據(jù)庫中檢索數(shù)據(jù)并將數(shù)據(jù)以結果集的形式顯示給用戶。(1)SELECT語句的語法格式SELECT字段[AS別名][ALL/DISTINCT]FROM<表名>WHERE<條件>(2)主要參數(shù)的說明SELECT:指定了在結果表中應包含哪些字段FROM:用于指定查詢涉及到哪些表WHERE:指定了在結果表中的記錄應當滿足的條件DISTINCT表示在查詢結果中去掉重復記錄;ALL表示在查詢結果中保留重復記錄,ALL為系統(tǒng)默認值,可以不寫。舉例12.1.3關系數(shù)據(jù)庫的操作2/32、插入記錄語句INSERTINSERT語句用于將新記錄插入到指定的表中。(1)INSERT的語法格式INSERTINTO<表名>[(<字段名1>[,<字段名2>…])]VALUES(<表達式1>[,<表達式2>…])(2)參數(shù)說明VALUES:指定待添加數(shù)據(jù)的具體值,其中的表達式的排列順序應與字段名的順序一致,且個數(shù)、數(shù)據(jù)類型相同。表達式的值必須是常量。未指定值的字段是空值,若INTO子句后面無任何字段,則插入的新記錄必須在每個字段上都有值。舉例12.1.3關系數(shù)據(jù)庫的操作3/33、修改記錄語句UPDATEUPDATE語句用于對表中一行或多行記錄的指定字段值進行修改。(1)UPDATE語句的語法格式UPDATE<表名>SET<字段名>=<表達式>[,<字段名>=<表達式>]…[WHERE<條件>](2)說明SET:給出要修改的字段及修改后的值。WHERE:待修改記錄應滿足的條件,缺省修改所有記錄。舉例4、刪除記錄語句DELETEDELETE語句用于邏輯刪除表中一行或多行記錄。(1)DELETE語句的語法格式DELETEFROM<表名>[WHERE<條件>](2)說明若無WHERE<條件>,則刪除所有記錄。舉例12.2ADO.NET簡介12.2.1ADO.NET體系結構12.2.2.NETDataProvider12.2.3DataSet對象12.2.4ADO.NET相關類的命名空間12.2.5ADO.NET的聯(lián)機與脫機數(shù)據(jù)存取模式12.2.1ADO.NET體系結構ADO.NET是.NET框架中的一系列類庫,包含了與數(shù)據(jù)源連接、提交查詢并處理結果的類。ADO.NET將數(shù)據(jù)訪問與數(shù)據(jù)處理分離,是通過兩個核心組件來完成,分別是:DataSet(數(shù)據(jù)集)和.NETDataProvide(數(shù)據(jù)提供程序)。圖12-2ADO.NET體系結構圖12.2.2.NETDataProvider.NETDataProvider(數(shù)據(jù)提供程序)用于連接到數(shù)據(jù)庫、執(zhí)行命令和檢索結果,是一系列為了提供更有效率的訪問而協(xié)同工作的組件。它包含4種提供程序:SQLClient數(shù)據(jù)提供程序、OracleClient數(shù)據(jù)提供程序、ODBC數(shù)據(jù)提供程序和OLEDB數(shù)據(jù)提供程序。每個.NET數(shù)據(jù)提供程序都包含了4個核心對象——Connection、Command、DataReader和DataAdapter。但是,在對數(shù)據(jù)庫進行訪問時,這4種對象的類名是不同的,其名稱取決于具體的.NET數(shù)據(jù)提供程序。12.2.3DataSet對象DataSet(數(shù)據(jù)集)對象是ADO.NET的核心組件,是數(shù)據(jù)在內(nèi)存中的表示形式,它不依賴于數(shù)據(jù)源(如:數(shù)據(jù)庫)而獨立存在于內(nèi)存中。DataSet對象支持脫機狀態(tài)下對數(shù)據(jù)庫進行訪問或者修改。當數(shù)據(jù)集的修改完成后,更改后的結果可以再次寫入數(shù)據(jù)庫,從而保留所做過的更改。DataSet中的數(shù)據(jù)可以由各種數(shù)據(jù)源提供。DataSet位于System.Data命名空間中。DataSet對象表示了數(shù)據(jù)庫中完整的數(shù)據(jù),包括表和表之間的關系等。它包含一個或多個DataTable對象的集合。而DataTable對象包含了數(shù)據(jù)列(DataColumn)和數(shù)據(jù)行(DataRow),就像一個普通的數(shù)據(jù)庫中的表一樣,甚至能夠定義表之間的關系及主鍵、外鍵、約束等。圖12-3DataSet對象模型

圖12-3DataSet對象模型

12.2.4ADO.NET相關類的命名空間1、System.Data命名空間要使用ADO.NET對象模型中的類時,必須首先引用System.Data這個命名空間。因為System.Data這個命名空間中包括大部分組成ADO.NET架構的基礎對象類別。2、System.

Data.

OleDb命名空間當要使用OLEDB數(shù)據(jù)提供程序來存取數(shù)據(jù)時,必須引用該這個命名空間。3、System.

Data.

SqlClient命名空間當要使用SQLServer數(shù)據(jù)提供程序存取數(shù)據(jù)時,必須引用該這個命名空間。舉例:引入System.Data.OleDb命名空間ImportsSystem.Data.OleDb如果引入命名空間后,可以輸入下列聲明,例如:DimMyAdapteAsNewOleDbDataAdapter否則要輸入完整的命名空間:DimMyAdapteAsNewSystem.Data.OleDb.OleDblDataAdapter12.2.5ADO.NET的聯(lián)機與脫機數(shù)據(jù)存取模式1、ADO.NET的聯(lián)機存取模式聯(lián)機存取模式就是應用程序自始至終都和數(shù)據(jù)庫是連接著的。適用于數(shù)據(jù)要時時更新的開發(fā)環(huán)境上并且數(shù)據(jù)是只讀。2、ADO.NET的脫機存取模式在脫機模式下,應用程序不用一直保持到數(shù)據(jù)源的連接。它打開數(shù)據(jù)連接并讀取數(shù)據(jù)后關閉連接,用戶對數(shù)據(jù)的操作(包括添加、修改、刪除等)都在本地進行,當用戶需要更新數(shù)據(jù)或者有其他請求時,就再次打開連接,發(fā)送已修改的數(shù)據(jù)后關閉連接。12.3ADO.NET對象及其編程12.3.1使用Connection對象連接數(shù)據(jù)源12.3.2使用Command對象執(zhí)行數(shù)據(jù)庫操作12.3.3使用DataReader對象12.3.4使用DataAdapter對象12.3.5使用DataSet對象12.3.6數(shù)據(jù)綁定12.3.1使用Connection對象連接數(shù)據(jù)源1/21.Connection對象的常用屬性—ConnectionString屬性該屬性是Connection對象的關鍵屬性,它是一個字符串,定義了正在連接的數(shù)據(jù)庫的類型、位置以及其他屬性,這些屬性用分號隔開,參數(shù)名和對應的值間用“=”連接。連接Access數(shù)據(jù)庫的連接字符串的例子:DimstrAsString=”Provider=Microsoft.Jet.OLEDB.4.0;DataSource=d:\Sample.mdb;uid=sa;pwd=dd”

12.3.1使用Connection對象連接數(shù)據(jù)源2/22.Connection對象的常用方法(1)Open()方法[格式]PublicOverridesSubOpen()該方法是利用ConnectionString屬性所指定的設置(即連接字符串)打開一個數(shù)據(jù)庫連接。一旦正確設置了ConnectionString,就可以建立Connection對象并調用Open方法打開連接。(2)Close()方法[格式]PublicOverridesSubClose()該方法是關閉與數(shù)據(jù)庫的連接,即關閉Connection對象。對數(shù)據(jù)庫所作的操作完成后,必須釋放連接,否則可能會影響系統(tǒng)性能和對應用程序的操作。3.使用Connection對象連接Access數(shù)據(jù)庫的實例DimstrAsString="Provider=Microsoft.Jet.OLEDB.4.0;"&_"DataSource=f:\stu_manager.mdb"'定義連接字符串

'使用OLEDB數(shù)據(jù)提供程序中的OleDbConnection類創(chuàng)建Connection對象的實例DimConnAsNewOleDbConnection(str)Conn.Open()'用Open方法打開數(shù)據(jù)庫連接……Conn.Close()'用Close方法關閉數(shù)據(jù)庫連接12.3.2使用Command對象執(zhí)行數(shù)據(jù)庫操作1/2使用Connection對象與數(shù)據(jù)源建立連接后,可使用Command對象來對數(shù)據(jù)源執(zhí)行對數(shù)據(jù)庫的操作,如:查詢、插入、刪除、更新等,并從數(shù)據(jù)源返回結果。1.Command對象的常用屬性(1)Connection屬性:設置與當前Command對象相關的Connection對象的名稱,即對哪一個數(shù)據(jù)源執(zhí)行命令。(2)CommandType屬性:用來設置Command對象要執(zhí)行的命令類型,是SQL語句、數(shù)據(jù)表名還是存儲過程。該屬性的值是CommandType枚舉型,包括Text(SQL命令,是缺省CommandType)、StoredProcedure(存儲過程名)、TableDirect(表名,Command對象將表名傳遞給服務器)。(3)CommandText屬性:用來設置要對數(shù)據(jù)源執(zhí)行的SQL語句、數(shù)據(jù)表名或存儲過程名。12.3.2使用Command對象執(zhí)行數(shù)據(jù)庫操作2/22.Command對象的常用方法(1)ExecuteReader()方法[格式]PublicFunctionExecuteReaderAsOleDbDataReader說明:將CommandText

屬性中所指定的命令發(fā)送到

Connection

對象,并生成一個只讀單向的DataReader對象,常用來執(zhí)行返回數(shù)據(jù)集的SELECT語句。(2)ExecuteNonQuery()方法[格式]PublicOverridesFunctionExecuteNonQueryAsInteger針對Connection

執(zhí)行SQL語句并返回受影響的行數(shù)。3.Command對象使用實例12.3.3使用DataReader對象1/2DataReader對象從數(shù)據(jù)庫中檢索出只讀、只進的數(shù)據(jù)流。1、DataReader對象的常用屬性(1)FieldCount屬性:獲取當前行中的列數(shù)。如果未放在有效的記錄集中,則為0;否則為當前行中的列數(shù)。默認值為-1。(2)item(i)或item(“列名”)屬性:獲取列的值。2、DataReader對象的常用方法(1)Read()方法[格式]PublicFunctionRead()AsBoolean使DataReader對象所獲取的記錄集的當前記錄指針前進一個記錄行。如果還有記錄,則為True;否則為False。說明:DataReader對象的默認位置在第一條記錄前面。因此,必須調用Read來開始訪問指定記錄中的數(shù)據(jù)。12.3.3使用DataReader對象2/22、DataReader對象的常用方法(2)Close()方法[格式]PublicSubClose()關閉DataReader對象。(3)GetName()方法[格式]PublicFunctionGetName(ByValiAsInteger)AsString獲取指定列(字段)的名稱。參數(shù)i為從0開始的列序號,返回值為指定列的名稱。3、DataReader對象使用實例【例12.7】編寫一個程序,能夠讀取Access數(shù)據(jù)庫中stu_manager庫的studinfo學生信息表中的所有信息,并顯示在文本框中。源程序12.3.4使用DataAdapter對象該對象是架構在Command對象上,通過Command對象對數(shù)據(jù)源執(zhí)行SQL命令,將數(shù)據(jù)填充到DataSet對象,以及把DataSet對象中的數(shù)據(jù)更新返回到數(shù)據(jù)源中。

1、DataAdapter對象的常用屬性(1)SelectCommand屬性:用于設置在數(shù)據(jù)源中選擇記錄的SQL語句。(2)InsertCommand屬性:用于設置將新記錄插入到數(shù)據(jù)源中的SQL語句。(3)UpdateCommand屬性:用于設置更新數(shù)據(jù)源中的記錄的SQL語句。(4)DeleteCommand屬性:用于設置從數(shù)據(jù)源中刪除記錄的SQL語句。2、DataAdapter對象的常用方法(1)Fill()方法:用于從數(shù)據(jù)源中提取數(shù)據(jù)并填充數(shù)據(jù)集對象DataSet。[格式1]PublicOverridesFunctionFill(dataSetAsDataSet)AsInteger[格式2]PublicFunctionFill(dataSetAsDataSet,srcTableasString)AsInteger(2)Update()方法:用于將DataSet對象中的數(shù)據(jù)進行更新。[格式1]PublicOverridesFunctionUpdate(dataSetAsDataSet)AsInteger[格式2]PublicFunctionUpdate(dataSetAsDataSet,srcTableAsString)AsInteger12.3.5使用DataSet對象1/41、DataSet和DataTable的概念(1)DataSet所有的DataTable對象的集合為Tables集合的對象,該集合對象的類型為DataTableCollection類。在該集合中,每個DataTable可以用Tables(i)或Tables(“表名”)來表示某個DataTable,其中,i表示從0開始的序號。(2)DataTable

每一個DataTable就象一個普通的關系數(shù)據(jù)庫中的表,包含列和行,由DataRow對象所組成的Rows集合和由DataColumn對象所組成的Columns集合構成。12.3.5使用DataSet對象2/42、DataSet對象的常用屬性及方法(1)Tables屬性具有以下子屬性:①Tables.Count子屬性:用于獲取DataSet集合中所有DataTable對象的個數(shù)。②Tables(i)或Tables(“表名”):用于獲取DataSet集合中序號為i或者“表名”表示的某個DataTable對象,編號i從0開始。③Tables(i).TableName:獲取序號為i的DataTable的表名。(2)Tables屬性的常用方法①Tables.Add()方法:將指定的

DataTable

添加到當前集合中[格式]PublicSubAdd(tableAsDataTable)②Tables.Clear()方法:清除所有

DataTable

對象的集合。[格式]PublicSubClear()③Tables.Remove()方法:從集合中刪除

DataTable

對象。[格式]PublicSubRemove(nameAsString)12.3.5使用DataSet對象3/43、DataTable對象(1)Columns屬性①Columns.Count子屬性:獲取Columns集合中所有列(DataColumn對象)的個數(shù)。②Columns(i).ColumnName子屬性:獲取或設置Columns集合中序號為i的列(DataColumn對象)的列名。③Columns(i).DataType子屬性:獲取或設置Columns集合中序號為i的列(DataColumn對象)的數(shù)據(jù)類型。④Columns.Add()方法:向當前數(shù)據(jù)表中增加一列[格式]PublicFunctionAdd(columnNameAsString,typeAsType)AsDataColumn⑤Columns.Clear()方法:清除當前數(shù)據(jù)表中的所有列[格式]PublicSubClear()⑥Columns.Remove()方法:從當前數(shù)據(jù)表中刪除一列[格式]PublicSubRemove(nameAsString)12.3.5使用DataSet對象4/43、DataTable對象(2)Rows屬性①Rows.Count子屬性:獲取Rows集合中所有行(DataRow對象)的個數(shù)。②Rows(i).item(j)或Rows(i).item(“列名”)子屬性:獲取或設置Columns集合中行(DataRow對象)序號為i的列(DataColumn對象)序號為j的字段值。③Rows.Add()方法:向當前數(shù)據(jù)表中增加一行[格式]PublicSubAdd(rowAsDataRow)④Rows.Clear()方法:清除當前數(shù)據(jù)表中的所有行[格式]PublicSubClear()⑤Rows.Remove()方法:從當前數(shù)據(jù)表中刪除一行[格式]PublicSubRemove(rowAsDataRow)4、DataSet對象使用實例在脫機模式下,利用DataSet對象實現(xiàn)【例12.7】。源程序12.3.6數(shù)據(jù)綁定1/31.簡單綁定簡單數(shù)據(jù)綁定通常是將控件綁定到數(shù)據(jù)表的某一個字段上,支持簡單綁定的控件主要有TextBox控件、Label控件等只顯示單個值的控件。綁定方法有兩種方式:(1)利用控件DataBindings屬性的Add方法來把控件和某個數(shù)據(jù)

溫馨提示

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

評論

0/150

提交評論