版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、第第6 6章章 ADO.NETADO.NET數(shù)據(jù)庫訪問技術(shù)數(shù)據(jù)庫訪問技術(shù)6.1 ADO.NET6.1 ADO.NET概述概述 ADO.NETADO.NET是一組向是一組向.NET.NET程序員公開數(shù)據(jù)訪問服務(wù)的類。程序員公開數(shù)據(jù)訪問服務(wù)的類。ADO.NETADO.NET為創(chuàng)建分布式數(shù)據(jù)共享應(yīng)用程序提供了一組豐富為創(chuàng)建分布式數(shù)據(jù)共享應(yīng)用程序提供了一組豐富的組件。它提供了對關(guān)系數(shù)據(jù)、的組件。它提供了對關(guān)系數(shù)據(jù)、XMLXML和應(yīng)用程序數(shù)據(jù)的訪和應(yīng)用程序數(shù)據(jù)的訪問,因此是問,因此是.NET Framework.NET Framework中不可缺少的一部分。中不可缺少的一部分。 ADO.NETADO.N
2、ET支持多種開發(fā)需求,包括創(chuàng)建由應(yīng)用程序、支持多種開發(fā)需求,包括創(chuàng)建由應(yīng)用程序、工具、語言或工具、語言或InternetInternet瀏覽器使用的前端數(shù)據(jù)庫客戶端瀏覽器使用的前端數(shù)據(jù)庫客戶端和中間層業(yè)務(wù)對象。和中間層業(yè)務(wù)對象。一、一、ADO.NETADO.NET結(jié)構(gòu)結(jié)構(gòu) 1 1、.NET Framework.NET Framework數(shù)據(jù)提供程序數(shù)據(jù)提供程序 .NET Framework.NET Framework數(shù)據(jù)提供程序是專門為數(shù)據(jù)處理以及數(shù)據(jù)提供程序是專門為數(shù)據(jù)處理以及快速地只進、只讀訪問數(shù)據(jù)而設(shè)計的組件。包含以下對快速地只進、只讀訪問數(shù)據(jù)而設(shè)計的組件。包含以下對象:象: Conne
3、ctionConnection對象對象 ConnectionConnection對象提供與數(shù)據(jù)源的連接。對象提供與數(shù)據(jù)源的連接。 CommandCommand對象對象 CommandCommand對象用來執(zhí)行訪問數(shù)據(jù)庫的命令,并從數(shù)據(jù)源對象用來執(zhí)行訪問數(shù)據(jù)庫的命令,并從數(shù)據(jù)源中返回結(jié)果。中返回結(jié)果。 DataReaderDataReader對象對象 DataReaderDataReader對象用于從數(shù)據(jù)庫中檢索對象用于從數(shù)據(jù)庫中檢索只讀、只進只讀、只進的數(shù)據(jù)的數(shù)據(jù)流。流。 DataAdapterDataAdapter對象對象 DataAdapterDataAdapter對象提供連接對象提供連接
4、DataSetDataSet對象和數(shù)據(jù)源的橋?qū)ο蠛蛿?shù)據(jù)源的橋梁。梁。 DataAdapter DataAdapter對象使用對象使用CommandCommand對象在數(shù)據(jù)源中執(zhí)行對象在數(shù)據(jù)源中執(zhí)行SQLSQL命令,以便將數(shù)據(jù)加載到命令,以便將數(shù)據(jù)加載到DataSetDataSet中,并使對中,并使對DataSetDataSet中中數(shù)據(jù)的更改與數(shù)據(jù)源保持一致。數(shù)據(jù)的更改與數(shù)據(jù)源保持一致。 TransactionTransaction對象對象 TransactionTransaction對象用于事務(wù)處理。對象用于事務(wù)處理。 ParameterParameter對象對象 ParameterParam
5、eter對象用于向?qū)ο笥糜谙駽ommandCommand對象傳遞命令參數(shù)。對象傳遞命令參數(shù)。2 2、DataSetDataSet對象對象 DataSetDataSet對象專門為獨立于任何數(shù)據(jù)源的數(shù)據(jù)訪問而設(shè)對象專門為獨立于任何數(shù)據(jù)源的數(shù)據(jù)訪問而設(shè)計。它可以用于多種不同的數(shù)據(jù)源,用于計。它可以用于多種不同的數(shù)據(jù)源,用于XMLXML數(shù)據(jù),或用于數(shù)據(jù),或用于管理應(yīng)用程序本地的數(shù)據(jù)。管理應(yīng)用程序本地的數(shù)據(jù)。DataSet DataSet 包含一個或多個包含一個或多個 DataTable DataTable 對象的集合,這些對象由數(shù)據(jù)行和數(shù)據(jù)列以及對象的集合,這些對象由數(shù)據(jù)行和數(shù)據(jù)列以及有關(guān)有關(guān)Data
6、TableDataTable對象中數(shù)據(jù)的主鍵、外鍵、約束和關(guān)系信息對象中數(shù)據(jù)的主鍵、外鍵、約束和關(guān)系信息組成。組成。 .NET Framework.NET Framework數(shù)據(jù)提供程序和數(shù)據(jù)提供程序和DataSetDataSet對象的關(guān)系如對象的關(guān)系如圖圖6.16.1所示。所示。圖圖6.1 ADO.NET6.1 ADO.NET結(jié)構(gòu)結(jié)構(gòu) DataTableDataTable對象對象 DataTableDataTable對象代表內(nèi)存中數(shù)據(jù)一個表,它由許多對象代表內(nèi)存中數(shù)據(jù)一個表,它由許多DataRowDataRow對象和對象和DataColumnDataColumn對象組成。對象組成。 Data
7、RowDataRow對象對象 DataRowDataRow對象表示對象表示DataTableDataTable中的一行數(shù)據(jù)。中的一行數(shù)據(jù)。 DataColumnDataColumn對象對象 DataColumnDataColumn對象表示對象表示DataTableDataTable一列。一列。二、二、ADO.NETADO.NET相關(guān)的命名空間相關(guān)的命名空間 System.Data.Odbc System.Data.Odbc 定義了基于定義了基于ODBC .NET FrameworkODBC .NET Framework數(shù)據(jù)提供程序訪問數(shù)據(jù)提供程序訪問ODBCODBC數(shù)據(jù)源的類集合。數(shù)據(jù)源的類集
8、合。 System.Data.OleDbSystem.Data.OleDb 定義了基于定義了基于OLE DB .NET FrameworkOLE DB .NET Framework數(shù)據(jù)提供程序訪問數(shù)據(jù)提供程序訪問OLE DBOLE DB數(shù)據(jù)源的類集合。數(shù)據(jù)源的類集合。 System.Data.SqlClientSystem.Data.SqlClient 定義了基于定義了基于SQL Server .NET FrameworkSQL Server .NET Framework數(shù)據(jù)提供程序訪數(shù)據(jù)提供程序訪問問SQL ServerSQL Server數(shù)據(jù)源的類集合。數(shù)據(jù)源的類集合。 System.Da
9、ta.OracleClientSystem.Data.OracleClient 定義了基于定義了基于Oracle .NET FrameworkOracle .NET Framework數(shù)據(jù)提供程序訪問數(shù)據(jù)提供程序訪問OracleOracle數(shù)據(jù)源的類集合。數(shù)據(jù)源的類集合。 System.Data.SqlTypesSystem.Data.SqlTypes 為為 SQL Server 2005 SQL Server 2005 中的本機數(shù)據(jù)類型提供類。這些類中的本機數(shù)據(jù)類型提供類。這些類為為 .NET Framework .NET Framework 公共語言運行庫公共語言運行庫 (CLR) (CL
10、R) 所提供的數(shù)據(jù)所提供的數(shù)據(jù)類型提供了一種更為安全和快速的替代項。類型提供了一種更為安全和快速的替代項。6.2 6.2 數(shù)據(jù)連接對象數(shù)據(jù)連接對象ConnectionConnection一、一、ConnectionConnection對象對象 ConnectionConnection對象代表了與數(shù)據(jù)源的連接。它代表與數(shù)據(jù)源對象代表了與數(shù)據(jù)源的連接。它代表與數(shù)據(jù)源進行的唯一會話。如果是客戶端進行的唯一會話。如果是客戶端/ /服務(wù)器數(shù)據(jù)庫系統(tǒng),該對象服務(wù)器數(shù)據(jù)庫系統(tǒng),該對象可以等價于到服務(wù)器的實際網(wǎng)絡(luò)連接??梢缘葍r于到服務(wù)器的實際網(wǎng)絡(luò)連接。 1 1、常用屬性、常用屬性 ConnectionStri
11、ngConnectionString ConnectionString ConnectionString屬性用來獲取或設(shè)置用于打開數(shù)據(jù)庫的屬性用來獲取或設(shè)置用于打開數(shù)據(jù)庫的字符串。字符串。 ConnectionTimeout ConnectionTimeout ConnectionTimeout ConnectionTimeout屬性屬性用來獲取在嘗試建立連接時終止用來獲取在嘗試建立連接時終止嘗試,并生成錯誤之前所等待的時間。默認(rèn)值為嘗試,并生成錯誤之前所等待的時間。默認(rèn)值為1515秒。秒。 DataBaseDataBase DataBase DataBase屬性用來獲取當(dāng)前數(shù)據(jù)庫或連接打開后
12、要使用屬性用來獲取當(dāng)前數(shù)據(jù)庫或連接打開后要使用的數(shù)據(jù)庫的名稱。的數(shù)據(jù)庫的名稱。 DataSource DataSource DataSource DataSource屬性用來獲取數(shù)據(jù)源的服務(wù)器名或文件名。屬性用來獲取數(shù)據(jù)源的服務(wù)器名或文件名。 StateState State State屬性用來獲取連接的當(dāng)前狀態(tài)。該屬性的取值有:屬性用來獲取連接的當(dāng)前狀態(tài)。該屬性的取值有:BrokenBroken、ClosedClosed、ConnectingConnecting、ExecutingExecuting、FetchingFetching、OpenOpen。 2 2、常用方法、常用方法 OpenO
13、pen Open Open方法使用方法使用 ConnectionStringConnectionString所指定的屬性設(shè)置所指定的屬性設(shè)置打開數(shù)據(jù)庫連接。打開數(shù)據(jù)庫連接。 格式:格式: ConnectionConnection對象名對象名.Open();.Open(); Close Close Close Close方法用于關(guān)閉到數(shù)據(jù)庫的連接。方法用于關(guān)閉到數(shù)據(jù)庫的連接。 格式:格式: ConnectionConnection對象名對象名.Close();.Close(); ChangeDatabase ChangeDatabase ChangeDatabase ChangeDatabase
14、方法為打開的方法為打開的ConnectionConnection更改當(dāng)前更改當(dāng)前數(shù)據(jù)庫。數(shù)據(jù)庫。 格式:格式: ConnectionConnection對象名對象名.ChangeDatabase(.ChangeDatabase(數(shù)據(jù)庫名數(shù)據(jù)庫名) ) CreateCommand CreateCommand CreateCommand CreateCommand方法創(chuàng)建并返回一個與該方法創(chuàng)建并返回一個與該ConnectionConnection對象關(guān)聯(lián)的對象關(guān)聯(lián)的Command Command 對象。對象。 格式:格式: ConnectionConnection對象名對象名.CreateComm
15、and().CreateCommand() BeginTransaction BeginTransaction 開始數(shù)據(jù)庫事務(wù)。開始數(shù)據(jù)庫事務(wù)。 格式:格式: Connection Connection對象名對象名.BeginTransaction() .BeginTransaction() Connection Connection對象名對象名.BeginTransaction(.BeginTransaction(事務(wù)名稱事務(wù)名稱) )二、創(chuàng)建二、創(chuàng)建ConnectionConnection對象對象 1 1、連接到、連接到SQL ServerSQL Server SqlConnection
16、SqlConnection類用于聲明和創(chuàng)建連接到類用于聲明和創(chuàng)建連接到SQL ServerSQL Server數(shù)據(jù)庫的數(shù)據(jù)庫的ConnectionConnection對象,其構(gòu)造函數(shù)為:對象,其構(gòu)造函數(shù)為: SqlConnection()SqlConnection() SqlConnection(connectionString)SqlConnection(connectionString) 其中,其中,connectionStringconnectionString為為stringstring類型,是連接到服類型,是連接到服務(wù)器的字符串。務(wù)器的字符串。 例例6-1 6-1 連接一個連接一個S
17、QL ServerSQL Server數(shù)據(jù)庫數(shù)據(jù)庫, ,如果連接成功,如果連接成功,則輸出則輸出“連接成功連接成功”信息,否則輸出異常信息。信息,否則輸出異常信息。 2 2、連接到、連接到OLE DBOLE DB數(shù)據(jù)源數(shù)據(jù)源 OleDbConnectionOleDbConnection類用于聲明和創(chuàng)建連接到類用于聲明和創(chuàng)建連接到OLE DBOLE DB數(shù)據(jù)數(shù)據(jù)源的源的ConnectionConnection對象,其構(gòu)造函數(shù)為:對象,其構(gòu)造函數(shù)為: OleDbConnection()OleDbConnection() OleDbConnection(connectionString)OleDbC
18、onnection(connectionString) 其中,其中,connectionStringconnectionString為為stringstring類型,是連接到類型,是連接到OLE DBOLE DB數(shù)據(jù)源的字符串。數(shù)據(jù)源的字符串。 例例6-2 6-2 連接一個連接一個SQL ServerSQL Server數(shù)據(jù)庫數(shù)據(jù)庫, ,如果連接成功,則如果連接成功,則輸出輸出“連接成功連接成功”信息,否則輸出異常信息。信息,否則輸出異常信息。 OLE DBOLE DB數(shù)據(jù)源可以是任何關(guān)系數(shù)據(jù)庫,不同的關(guān)系數(shù)數(shù)據(jù)源可以是任何關(guān)系數(shù)據(jù)庫,不同的關(guān)系數(shù)據(jù)庫,據(jù)庫,OLE DBOLE DB提供程序不
19、同。表提供程序不同。表6-16-1列舉了常用關(guān)系數(shù)據(jù)列舉了常用關(guān)系數(shù)據(jù)庫的庫的OLE DBOLE DB提供程序。提供程序。關(guān)系數(shù)據(jù)庫關(guān)系數(shù)據(jù)庫OLE DBOLE DB提供程序提供程序SQL ServerSQL ServerSQLOLEDBSQLOLEDBORACLEORACLE MSDAORA MSDAORA ACCESSACCESSMicrosoft.Jet.OLEDB.4.0Microsoft.Jet.OLEDB.4.0 表表6-16-1常用的常用的OLE DBOLE DB提供程序提供程序 3 3、連接到、連接到ODBCODBC數(shù)據(jù)源數(shù)據(jù)源 OdbcConnectionOdbcConnec
20、tion類用于聲明和創(chuàng)建連接到類用于聲明和創(chuàng)建連接到ODBCODBC數(shù)據(jù)數(shù)據(jù)源的源的ConnectionConnection對象,其構(gòu)造函數(shù)為:對象,其構(gòu)造函數(shù)為: OdbcConnection()OdbcConnection() OdbcConnection(connectionString)OdbcConnection(connectionString) 其中,其中,connectionStringconnectionString為為stringstring類型,是連接到類型,是連接到ODBCODBC數(shù)據(jù)源的字符串。數(shù)據(jù)源的字符串。 例例6-3 6-3 連接一個連接一個SQL Server
21、SQL Server數(shù)據(jù)庫數(shù)據(jù)庫, ,如果連接成功,則如果連接成功,則輸出輸出“連接成功連接成功”信息,否則輸出異常信息。信息,否則輸出異常信息。 ODBCODBC數(shù)據(jù)源可以是任何關(guān)系數(shù)據(jù)庫,也可以是數(shù)據(jù)源可以是任何關(guān)系數(shù)據(jù)庫,也可以是ExcelExcel和和文本文件。不同的文本文件。不同的ODBCODBC數(shù)據(jù)源,連接字符串不同,下面列數(shù)據(jù)源,連接字符串不同,下面列舉出常見的舉出常見的ODBCODBC數(shù)據(jù)源的連接字符串:數(shù)據(jù)源的連接字符串: SQL ServerSQL Server數(shù)據(jù)庫數(shù)據(jù)庫 “Driver=SQL Server;Server=Driver=SQL Server;Server
22、=服務(wù)器名服務(wù)器名; ; Trusted_Connection=Yes;Database=Trusted_Connection=Yes;Database=數(shù)據(jù)庫名數(shù)據(jù)庫名; ; OracleOracle數(shù)據(jù)庫數(shù)據(jù)庫 Driver=Microsoft ODBC for Oracle;Server= Driver=Microsoft ODBC for Oracle;Server=服務(wù)器服務(wù)器名名;Persist Security Info=False;Trusted_Connection= ;Persist Security Info=False;Trusted_Connection= YesYe
23、s AccessAccess數(shù)據(jù)庫數(shù)據(jù)庫 “ “Driver=Microsoft Access Driver (Driver=Microsoft Access Driver (* *.mdb);DBQ=.mdb);DBQ=數(shù)數(shù)據(jù)庫文件名據(jù)庫文件名 ExcelExcel文件文件 “ “Driver=Microsoft Excel Driver (Driver=Microsoft Excel Driver (* *.xls);DBQ=.xls);DBQ=文文件名件名 文本文件文本文件 “ “Driver=Microsoft Text Driver (Driver=Microsoft Text Dr
24、iver (* *.txt; .txt; * *.csv); .csv); DBQ=DBQ=文件路徑文件路徑 DSNDSN “DSN=“DSN=數(shù)據(jù)源名數(shù)據(jù)源名” 4 4、連接到、連接到OracleOracle數(shù)據(jù)源數(shù)據(jù)源 OracleConnectionOracleConnection類用于聲明和創(chuàng)建連接到類用于聲明和創(chuàng)建連接到OracleOracle數(shù)數(shù)據(jù)源的據(jù)源的ConnectionConnection對象,其構(gòu)造函數(shù)為:對象,其構(gòu)造函數(shù)為: OracleConnection()OracleConnection() OracleConnection(connectionString)Or
25、acleConnection(connectionString) 其中,其中,connectionStringconnectionString為為stringstring類型,是連接到類型,是連接到OracleOracle數(shù)據(jù)源的字符串。數(shù)據(jù)源的字符串。 例例6-4 6-4 連接一個連接一個OracleOracle數(shù)據(jù)庫數(shù)據(jù)庫, ,如果連接成功,則輸出如果連接成功,則輸出“連接成功連接成功”信息,否則輸出異常信息。信息,否則輸出異常信息。三、關(guān)閉三、關(guān)閉ConnectionConnection對象對象 關(guān)閉關(guān)閉ConnectionConnection對象需要調(diào)用對象需要調(diào)用CloseClose
26、或或DisposeDispose方法。方法。6.3 6.3 執(zhí)行數(shù)據(jù)庫命令對象執(zhí)行數(shù)據(jù)庫命令對象CommandCommand一、一、CommandCommand對象對象 CommandCommand對象用來執(zhí)行訪問數(shù)據(jù)庫的命令。對象用來執(zhí)行訪問數(shù)據(jù)庫的命令。 1 1、常見屬性、常見屬性 Connection Connection 獲取或設(shè)置獲取或設(shè)置CommandCommand對象使用的對象使用的ConnectionConnection對象。對象。 CommandTimeoutCommandTimeout 獲取或設(shè)置在終止執(zhí)行命令的嘗試并生成錯誤之前的等獲取或設(shè)置在終止執(zhí)行命令的嘗試并生成錯誤
27、之前的等待時間。默認(rèn)值為待時間。默認(rèn)值為3030秒。秒。 CommandTextCommandText 獲取或設(shè)置要對數(shù)據(jù)源執(zhí)行的命令。該命令可以是獲取或設(shè)置要對數(shù)據(jù)源執(zhí)行的命令。該命令可以是SQLSQL語語句、存儲過程名稱或表名。句、存儲過程名稱或表名。 CommandType CommandType 獲取或設(shè)置一個值,該值指示獲取或設(shè)置一個值,該值指示CommandTextCommandText屬性的命屬性的命令類型。該屬性的值可以是:令類型。該屬性的值可以是:TextText、TableDirectTableDirect或或StoredProcedureStoredProcedure之一
28、。在之一。在C#C#中中CommandTypeCommandType枚舉定義了枚舉定義了CommandTypeCommandType的取值。的取值。 ParametersParameters 獲取獲取ParameterCollectionParameterCollection集合。參見集合。參見SQLSQL參數(shù)傳遞。參數(shù)傳遞。 Transaction Transaction 獲取或設(shè)置獲取或設(shè)置TransactionTransaction對象。參見事務(wù)處理。對象。參見事務(wù)處理。 2 2、常見方法、常見方法 ExecuteNonQuery ExecuteNonQuery 對連接執(zhí)行命令并返回受影
29、響的行數(shù)。該方法不返回對連接執(zhí)行命令并返回受影響的行數(shù)。該方法不返回結(jié)果集。即執(zhí)行命令,但不返回結(jié)果。結(jié)果集。即執(zhí)行命令,但不返回結(jié)果。 格式:格式: CommandCommand對象對象.ExecuteNonQuery().ExecuteNonQuery() ExecuteReader ExecuteReader 對連接執(zhí)行命令并生成一個對連接執(zhí)行命令并生成一個DataReaderDataReader對象。對象。 格式:格式: CommandCommand對象對象.ExecuteReader().ExecuteReader() ExecuteScalar ExecuteScalar 執(zhí)行查詢
30、,并返回查詢所返回的結(jié)果集中第一行的第執(zhí)行查詢,并返回查詢所返回的結(jié)果集中第一行的第一列一列, ,而忽略其他行或列。而忽略其他行或列。二、創(chuàng)建二、創(chuàng)建CommandCommand對象對象 1 1、利用、利用ConnectionConnection對象的對象的CreateCommandCreateCommand方法創(chuàng)建方法創(chuàng)建 例例6-5 6-5 向向studentstudent關(guān)系表中插入一條記錄。關(guān)系表中插入一條記錄。 2 2、利用、利用SqlCommandSqlCommand類創(chuàng)建。類創(chuàng)建。 SqlCommandSqlCommand類的構(gòu)造函數(shù)有:類的構(gòu)造函數(shù)有: SqlCommand()
31、SqlCommand() SqlCommand(string cmdText)SqlCommand(string cmdText) SqlCommand(string cmdText,SqlConnection SqlCommand(string cmdText,SqlConnection connection)connection) SqlCommand(string cmdText,SqlConnection SqlCommand(string cmdText,SqlConnectionconnection,SqlTransaction transaction)connection,Sql
32、Transaction transaction) 例例6-6 6-6 統(tǒng)計統(tǒng)計studentstudent關(guān)系表中記錄數(shù)。關(guān)系表中記錄數(shù)。 3 3、利用、利用OleDbCommandOleDbCommand類創(chuàng)建。類創(chuàng)建。 OleDbCommand()OleDbCommand() OleDbCommand(string cmdText)OleDbCommand(string cmdText) OleDbCommand(string cmdText,OleDbConnection OleDbCommand(string cmdText,OleDbConnection connection)con
33、nection) OleDbCommand(string cmdText, OleDbConnection OleDbCommand(string cmdText, OleDbConnection connection,OleDbTransaction transaction)connection,OleDbTransaction transaction) 也可以利用也可以利用OdbcCommandOdbcCommand類和類和OracleCommandOracleCommand類創(chuàng)建類創(chuàng)建CommandCommand對象。對象。三、三、SQLSQL參數(shù)傳遞參數(shù)傳遞 1 1、Parameter
34、Parameter對象對象 (1)(1)常見屬性常見屬性 DbTypeDbType DbType DbType屬性用來獲取或設(shè)置屬性用來獲取或設(shè)置ParameterParameter對象的數(shù)據(jù)類型。對象的數(shù)據(jù)類型。常見取值有:常見取值有:BigIntBigInt、IntInt、TinyIntTinyInt、RealReal、FloatFloat、DecimalDecimal、CharChar、NcharNchar、NtextNtext、NVarCharNVarChar和和DateTimeDateTime等。等。在在C#C#中中SqlDbTypeSqlDbType枚舉、枚舉、OleDbTypeO
35、leDbType枚舉、枚舉、OdbcTypeOdbcType枚舉和枚舉和OracleTypeOracleType枚舉定義了枚舉定義了DbTypeDbType屬性的取值。屬性的取值。 DirectionDirection Direction Direction屬性獲取或設(shè)置一個值,該值指示參數(shù)是只屬性獲取或設(shè)置一個值,該值指示參數(shù)是只可輸入、只可輸出、雙向還是存儲過程返回值參數(shù)。常見可輸入、只可輸出、雙向還是存儲過程返回值參數(shù)。常見取值有:取值有:InputInput、InputOutputInputOutput、OutputOutput和和ReturnValueReturnValue。默認(rèn)值為
36、默認(rèn)值為InputInput。在。在C#C#中中ParameterDirectionParameterDirection枚舉定義了枚舉定義了DirectionDirection屬性的取值。屬性的取值。 ParameterNameParameterName ParameterName ParameterName屬性用來獲取或設(shè)置屬性用來獲取或設(shè)置SQLSQL命令中參數(shù)的名命令中參數(shù)的名稱。稱。 SizeSize Size Size屬性用來獲取或設(shè)置屬性用來獲取或設(shè)置ParameterParameter對象的最大大小對象的最大大?。ㄒ宰止?jié)為單位)。(以字節(jié)為單位)。 ValueValue Valu
37、e Value屬性用來獲取或設(shè)置屬性用來獲取或設(shè)置ParameterParameter對象的值。對象的值。 (2)(2)創(chuàng)建創(chuàng)建ParameterParameter對象對象 利用利用SqlParameterSqlParameter類、類、OleDbParameterOleDbParameter類、類、OdbcParameterOdbcParameter類和類和OracleParameterOracleParameter類創(chuàng)建。類創(chuàng)建。 利用利用CommandCommand對象的對象的CreateParameterCreateParameter方法創(chuàng)建。方法創(chuàng)建。 2 2、ParameterCo
38、llectionParameterCollection集合集合 ParameterCollectionParameterCollection集合表示與集合表示與CommandCommand對象相關(guān)聯(lián)對象相關(guān)聯(lián)的參數(shù)集合。的參數(shù)集合。 (1)(1)常見屬性常見屬性 CountCount 返回返回ParameterCollectionParameterCollection集合中集合中ParameterParameter對象的個對象的個數(shù)。數(shù)。 (2)(2)常見方法常見方法 AddAdd Add Add方法用于將方法用于將ParameterParameter對象加入到對象加入到ParameterCo
39、llectionParameterCollection集合中。其格式:集合中。其格式: ParameterCollectionParameterCollection集合集合.Add(Parameter.Add(Parameter對象對象) ) Clear Clear Clear Clear方法用于將方法用于將ParameterCollectionParameterCollection集合中所有集合中所有ParameterParameter對象刪除。其格式:對象刪除。其格式: ParameterCollectionParameterCollection集合集合.Clear().Clear() R
40、emove Remove Remove Remove方法用于將方法用于將ParameterCollectionParameterCollection集合中指定集合中指定的的ParameterParameter對象刪除。其格式:對象刪除。其格式: ParameterCollectionParameterCollection集合集合.Remove(Parameter.Remove(Parameter對象對象) ) 例例6-7 6-7 執(zhí)行帶參數(shù)的存儲過程。執(zhí)行帶參數(shù)的存儲過程。 6.4 6.4 數(shù)據(jù)讀取器對象數(shù)據(jù)讀取器對象DataReaderDataReader DataReaderDataRea
41、der對象能夠?qū)ο竽軌蛱峁┮环N從數(shù)據(jù)庫讀取行的只讀、提供一種從數(shù)據(jù)庫讀取行的只讀、只進數(shù)據(jù)流。只進數(shù)據(jù)流。不能直接實例化不能直接實例化DataReaderDataReader,即實例是調(diào)用,即實例是調(diào)用ExecuteReader()ExecuteReader()方法后從相應(yīng)數(shù)據(jù)庫的命令對象方法后從相應(yīng)數(shù)據(jù)庫的命令對象( (如如SqICommand)SqICommand)中返回的。中返回的。 一、常見屬性一、常見屬性 1 1、FieldCount FieldCount FieldCount FieldCount屬性用于獲取當(dāng)前行中的列數(shù)。屬性用于獲取當(dāng)前行中的列數(shù)。 2 2、HasRows Ha
42、sRows HasRows HasRows屬性用于獲取一個值,該值指示屬性用于獲取一個值,該值指示DataReaderDataReader對對象是否包含一行或多行。如果象是否包含一行或多行。如果DataReaderDataReader對象包含一行或?qū)ο蟀恍谢蚨嘈?,則為多行,則為truetrue;否則為;否則為falsefalse。 3 3、IsClosed IsClosed IsClosed IsClosed屬性用于獲取一個值,該值指示屬性用于獲取一個值,該值指示DataReaderDataReader對象是否已關(guān)閉。如果指定的對象是否已關(guān)閉。如果指定的DataReaderDataRead
43、er對象已關(guān)閉,則對象已關(guān)閉,則為為truetrue;否則為;否則為falsefalse。二、常見方法二、常見方法 1 1、Close Close Close Close方法用來關(guān)閉方法用來關(guān)閉DataReaderDataReader對象。其格式:對象。其格式: DataReaderDataReader對象對象.Close();.Close(); 2 2、Read Read Read Read方法使方法使DataReaderDataReader對象前進到下一條記錄。如果對象前進到下一條記錄。如果存在多個行,則返回存在多個行,則返回truetrue;否則返回;否則返回falsefalse。其格式
44、:。其格式: DataReaderDataReader對象對象.Read().Read() 例例6-8 6-8 對對studentstudent表按學(xué)號查詢學(xué)生信息。表按學(xué)號查詢學(xué)生信息。 3 3、NextResultNextResult 當(dāng)讀取批處理當(dāng)讀取批處理SQLSQL語句的結(jié)果時,語句的結(jié)果時,NextResultNextResult方法使數(shù)方法使數(shù)據(jù)讀取器前進到下一個結(jié)果集。如果存在多個結(jié)果集,則據(jù)讀取器前進到下一個結(jié)果集。如果存在多個結(jié)果集,則返回返回truetrue;否則返回;否則返回falsefalse。其格式:。其格式: DataReaderDataReader對象對象.Ne
45、xtResult().NextResult() 例例6-9 6-9 執(zhí)行多條執(zhí)行多條SQLSQL語句。語句。 4 4、GetValue GetValue GetValue GetValue方法用于獲取當(dāng)前記錄行指定列的值。其格方法用于獲取當(dāng)前記錄行指定列的值。其格式:式: DataReaderDataReader對象對象.GetValue(i).GetValue(i)其中,參數(shù)其中,參數(shù)i i為整型,指示列號。為整型,指示列號。 5 5、GetValues GetValues GetValues GetValues方法用于獲取當(dāng)前行的集合中的所有屬性方法用于獲取當(dāng)前行的集合中的所有屬性列。其格
46、式為:列。其格式為: DataReaderDataReader對象對象.GetValues(ObjArray).GetValues(ObjArray)其中,參數(shù)其中,參數(shù)ObjArrayObjArray為為ObjectObject類型的數(shù)組。該方法調(diào)用類型的數(shù)組。該方法調(diào)用后當(dāng)前行的集合中的所有屬性列的值復(fù)制到后當(dāng)前行的集合中的所有屬性列的值復(fù)制到ObjArrayObjArray數(shù)數(shù)組中,并返回屬性列數(shù)。組中,并返回屬性列數(shù)。 6 6、IsDBNull IsDBNull IsDBNull IsDBNull方法獲取一個值,該值指示列中是否包含方法獲取一個值,該值指示列中是否包含不存在的或已丟失的
47、值。其格式為:不存在的或已丟失的值。其格式為: DataReaderDataReader對象對象.IsDBNull(i).IsDBNull(i)其中,參數(shù)其中,參數(shù)i i為整型,指示列號。為整型,指示列號。三、三、DataReaderDataReader對象的聲明和創(chuàng)建對象的聲明和創(chuàng)建 DataReaderDataReader對象的聲明可以利用對象的聲明可以利用SqlDataReaderSqlDataReader類、類、OleDbDataReaderOleDbDataReader類、類、OdbcDataReaderOdbcDataReader類和類和OracleDataReaderOracle
48、DataReader類。利用類。利用CommandCommand對象的對象的ExecuteReaderExecuteReader方法創(chuàng)建方法創(chuàng)建DataReaderDataReader對象。對象。 參見例參見例6-96-9 6.5 6.5 數(shù)據(jù)適配器對象數(shù)據(jù)適配器對象DataAdapterDataAdapter DataAdapter DataAdapter對象用作對象用作DataSetDataSet對象和數(shù)據(jù)源之間的橋接對象和數(shù)據(jù)源之間的橋接器,以便檢索和保存數(shù)據(jù)。器,以便檢索和保存數(shù)據(jù)。一、一、DataAdapterDataAdapter對象對象 1 1、常見屬性、常見屬性 SelectC
49、ommand SelectCommand SelectCommand SelectCommand屬性用于獲取或設(shè)置一個執(zhí)行檢索命令屬性用于獲取或設(shè)置一個執(zhí)行檢索命令的的CommandCommand對象,對象,用于在數(shù)據(jù)源中選擇記錄用于在數(shù)據(jù)源中選擇記錄。 InsertCommand InsertCommand InsertCommand InsertCommand屬性用于獲取或設(shè)置一個執(zhí)行插入命令屬性用于獲取或設(shè)置一個執(zhí)行插入命令的的CommandCommand對象,對象,用于在數(shù)據(jù)源中插入記錄用于在數(shù)據(jù)源中插入記錄。 DeleteCommand DeleteCommand DeleteCom
50、mand DeleteCommand屬性用于獲取或設(shè)置一個執(zhí)行刪除命令屬性用于獲取或設(shè)置一個執(zhí)行刪除命令的的CommandCommand對象,對象,用于在數(shù)據(jù)源中刪除記錄用于在數(shù)據(jù)源中刪除記錄。 UpdateCommand UpdateCommand UpdateCommand UpdateCommand屬性用于獲取或設(shè)置一個執(zhí)行更新命令屬性用于獲取或設(shè)置一個執(zhí)行更新命令的的CommandCommand對象,對象,用于在數(shù)據(jù)源中更新記錄用于在數(shù)據(jù)源中更新記錄。 2 2、常見方法、常見方法 Fill Fill Fill Fill方法用于填充方法用于填充DataSetDataSet或或DataTa
51、bleDataTable。其格式:。其格式: 1)DataAdapter1)DataAdapter對象對象.Fill(ds).Fill(ds) 參數(shù)參數(shù)dsds為為DataSetDataSet類型的對象。類型的對象。 2)DataAdapter 2)DataAdapter對象對象.Fill(ds,srcTable).Fill(ds,srcTable) 參數(shù)參數(shù)dsds為為DataSetDataSet類型的對象,類型的對象,srcTablesrcTable為為stringstring類類型,表示型,表示DataSetDataSet對象中對象中DataTableDataTable名稱。名稱。 Up
52、date Update Update Update方法為方法為DataSetDataSet或或DataTableDataTable中每個已插入、已中每個已插入、已更新或已刪除的行調(diào)用相應(yīng)的更新或已刪除的行調(diào)用相應(yīng)的INSERTINSERT、UPDATEUPDATE或或DELETEDELETE語語句,以更新數(shù)據(jù)庫。其格式:句,以更新數(shù)據(jù)庫。其格式: 1)DataAdapter1)DataAdapter對象對象.Update(ds).Update(ds) 參數(shù)參數(shù)dsds為為DataSetDataSet類型的對象。類型的對象。 2)DataAdapter2)DataAdapter對象對象.Upda
53、te(dt).Update(dt) 參數(shù)參數(shù)dtdt為為DataTableDataTable類型的對象。類型的對象。二、二、DataAdapterDataAdapter對象的聲明和創(chuàng)建對象的聲明和創(chuàng)建 可以利用可以利用SqlDataAdapterSqlDataAdapter類、類、OleDbDataAdapterOleDbDataAdapter類、類、OdbcDataAdapterOdbcDataAdapter類和類和OracleDataAdapterOracleDataAdapter類聲明和創(chuàng)建類聲明和創(chuàng)建DataAdapterDataAdapter對象。對象。 例例6-10 6-10 按學(xué)
54、號從按學(xué)號從studentstudent表中查詢學(xué)生信息。表中查詢學(xué)生信息。 例例6-11 6-11 對對studentstudent表插入記錄。表插入記錄。6.6 6.6 數(shù)據(jù)集數(shù)據(jù)集DataSetDataSet DataSet DataSet對象是對象是ADO.NETADO.NET結(jié)構(gòu)的主要組件,它是從數(shù)據(jù)結(jié)構(gòu)的主要組件,它是從數(shù)據(jù)源中檢索到的數(shù)據(jù)在內(nèi)存中的緩存。源中檢索到的數(shù)據(jù)在內(nèi)存中的緩存。DataSetDataSet對象由一組對象由一組 DataTableDataTable對象組成。對象組成。一、一、DataSetDataSet內(nèi)部結(jié)構(gòu)內(nèi)部結(jié)構(gòu) DataSetDataSet內(nèi)部結(jié)構(gòu)如
55、圖內(nèi)部結(jié)構(gòu)如圖6.26.2所示。所示。二、二、DataSetDataSet對象的聲明和創(chuàng)建對象的聲明和創(chuàng)建 可以用可以用DataSetDataSet類聲明和創(chuàng)建類聲明和創(chuàng)建DataSetDataSet對象。對象。DataSetDataSet類的構(gòu)造函數(shù)有:類的構(gòu)造函數(shù)有: DataSet() DataSet() DataSet(StrName)DataSet(StrName)其中,參數(shù)其中,參數(shù)StrNameStrName為為stringstring類型,用于指定類型,用于指定DataSetDataSet對象對象名稱名稱DataRelationCollectionDataSetExtended
56、PropertiesDataTableCollectionDataTableDataViewChildRelationsParentRelationsConstrainsExtendedPropertiesPrimaryKeyDataRowCollectionDataRowDataColumnCollectionDataColumnExtendedProperties圖圖6.2 DataSet6.2 DataSet內(nèi)部結(jié)構(gòu)內(nèi)部結(jié)構(gòu)三、使用三、使用DataSetDataSet對象訪問數(shù)據(jù)庫對象訪問數(shù)據(jù)庫 使用使用DataSetDataSet對象訪問數(shù)據(jù)庫的步驟:對象訪問數(shù)據(jù)庫的步驟: 創(chuàng)建創(chuàng)建C
57、onnectionConnection對象,連接數(shù)據(jù)庫。對象,連接數(shù)據(jù)庫。 創(chuàng)建創(chuàng)建CommandCommand對象,設(shè)置執(zhí)行命令和命令類型。對象,設(shè)置執(zhí)行命令和命令類型。 創(chuàng)建創(chuàng)建DataAdapterDataAdapter對象和對象和DataSetDataSet對象,用對象,用DataAdapterDataAdapter對象的對象的FillFill方法填充方法填充DataSetDataSet對象的對象的DataTableDataTable對象。對象。 如果命令是查詢數(shù)據(jù)庫,則輸出如果命令是查詢數(shù)據(jù)庫,則輸出DataTableDataTable對象的每行每對象的每行每列。如果要對數(shù)據(jù)庫增、刪
58、、改操作,則對列。如果要對數(shù)據(jù)庫增、刪、改操作,則對DataTableDataTable對象做對象做相應(yīng)的增、刪、改操作,并通過相應(yīng)的增、刪、改操作,并通過DataAdapterDataAdapter對象的對象的UpdateUpdate方方法將更新后的數(shù)據(jù)提交到數(shù)據(jù)庫中。法將更新后的數(shù)據(jù)提交到數(shù)據(jù)庫中。 例例6-12 6-12 對對studentstudent表刪除記錄。表刪除記錄。四、四、DataSetDataSet對象和數(shù)據(jù)控件綁定對象和數(shù)據(jù)控件綁定 具有具有DataBindingsDataBindings屬性或?qū)傩曰駾ataSourceDataSource屬性的控件稱為數(shù)屬性的控件稱為數(shù)
59、據(jù)控件,在據(jù)控件,在C/SC/S模式和模式和B/SB/S模式應(yīng)用程序設(shè)計中有時需要將模式應(yīng)用程序設(shè)計中有時需要將DataSetDataSet對象和數(shù)據(jù)控件綁定,以實現(xiàn)一些簡單的用戶界面。對象和數(shù)據(jù)控件綁定,以實現(xiàn)一些簡單的用戶界面。 具有具有DataBindingsDataBindings屬性的數(shù)據(jù)控件有:屬性的數(shù)據(jù)控件有:LabelLabel、TextBoxTextBox、ComboBoxComboBox、checkBoxcheckBox、dateTimePickerdateTimePicker、maskedTextBoxmaskedTextBox、monthCalendarmonthCal
60、endar、numericUpDownnumericUpDown、pictureBoxpictureBox、radioButtonradioButton等。等。 具有具有DataSourceDataSource屬性的數(shù)據(jù)控件有:屬性的數(shù)據(jù)控件有:listBoxlistBox、DataGridViewDataGridView等。等。 1 1、將、將DataSetDataSet對象和具有對象和具有DataBindingsDataBindings屬性的數(shù)據(jù)控件屬性的數(shù)據(jù)控件綁定綁定 數(shù)據(jù)控件的數(shù)據(jù)控件的DataBindingsDataBindings屬性是只讀的,該屬性獲取控屬性是只讀的,該屬性獲取
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025標(biāo)準(zhǔn)版?zhèn)€人購房合同書
- 2025合伙買車合同
- 2024-2025學(xué)年新教材高中生物 第二章 基因和染色體的關(guān)系 微專題四 伴性遺傳的解題方法說課稿 新人教版必修第二冊
- 預(yù)制樓板施工方案
- 肇慶鋼板樁支護施工方案
- 別墅電梯出售合同范例
- 2023九年級數(shù)學(xué)下冊 第二十九章 投影與視圖29.1 投影第2課時 正投影說課稿 (新版)新人教版001
- 2024年四年級英語上冊 Unit 3 Let's Go Lesson 15 In the City說課稿 冀教版(三起)
- 自然補償管道施工方案
- 2024年四年級英語上冊 Unit 1 My classroom The fifth period(第五課時)說課稿 人教PEP
- 統(tǒng)編《道德與法治》三年級下冊教材分析
- 清淤邊坡支護施工方案
- 國際尿失禁咨詢委員會尿失禁問卷表
- 國開行政管理論文行政組織的變革及其現(xiàn)實性研究
- 運動技能學(xué)習(xí)中的追加反饋
- 《淄博張店區(qū)停車問題治理現(xiàn)狀及優(yōu)化對策分析【開題報告+正文】15000字 》
- 常用電子元器件基礎(chǔ)知識演示
- GB/T 32918.4-2016信息安全技術(shù)SM2橢圓曲線公鑰密碼算法第4部分:公鑰加密算法
- 2023年藥事法規(guī)教學(xué)案例庫及案例分析
- 北京市水務(wù)安全生產(chǎn)風(fēng)險評估指南
- 吸引器教學(xué)講解課件
評論
0/150
提交評論