




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第9章ADO.NET數(shù)據(jù)訪問技術ActiveXDataObjects〔ADO〕是Microsoft開發(fā)的面向對象的數(shù)據(jù)訪問庫,目前已經得到了廣泛的應用。而ADO.NET那么是ADO的后續(xù)技術。但ADO.NET并不是ADO的簡單升級,而是有非常大的改進。利用ADO.NET,程序員可以非常簡單而快速地訪問各種數(shù)據(jù)庫,如SQLServer數(shù)據(jù)庫。.1第9章ADO.NET數(shù)據(jù)訪問技術ActiveXData9.1數(shù)據(jù)庫概述9.1.1關系數(shù)據(jù)庫的根本結構1.表2.記錄3.字段4.關系5.索引6.視圖7.存儲過程.29.1數(shù)據(jù)庫概述9.1.1關系數(shù)據(jù)庫的根本結構.2表9.1學生情況表student學號姓名性別民族班號1王華女漢族070012孫麗女滿族070023李兵男漢族070016張軍男漢族070018馬棋男回族07002表9.2學生成績表score學號課程名分數(shù)1C語言801數(shù)據(jù)結構832C語言702數(shù)據(jù)結構523C語言763數(shù)據(jù)結構706C語言906數(shù)據(jù)結構928C語言888數(shù)據(jù)結構79Stud數(shù)據(jù)庫中有以下兩個表:.3表9.1學生情況表student學號姓名性別民族班號1王9.1.2SQLServer2005數(shù)據(jù)庫管理系統(tǒng)SQLServer2005是微軟公司在SQLServer2000根底上推出的關系數(shù)據(jù)庫管理系統(tǒng),是目前主流的數(shù)據(jù)庫管理系統(tǒng)之一。SQLServer2005版本:SQLServer2005EnterpriseEdition〔X86/X64〕——企業(yè)版SQLServer2005StandardEdition〔X86/X64〕——標準版SQLServer2005WorkgroupEdition〔X86〕——工作組版SQLServer2005DeveloperEdition〔X86/X64〕——開發(fā)版SQLServer2005ExpressEdition〔X86〕——學習版SQLServer7→SQLServer2000→SQLServer2005→SQLServer2021→SQLServer20SQLServer2005數(shù)據(jù)庫管理系統(tǒng)SQ1.建立數(shù)據(jù)庫Stud在安裝并進入SQLServer2005系統(tǒng)后〔這里的登錄名為sa,密碼為123456〕,通過右擊“數(shù)據(jù)庫〞項,在出現(xiàn)的快捷菜單中選擇“新建數(shù)據(jù)庫〞命令,建立一個名稱為Stud的數(shù)據(jù)庫,將其路徑改為Myaspnet網(wǎng)站的App_Data文件夾中〔完整路徑為C:\ASPNET例如\ASPNET\App_Data文件夾〕,這樣自動建立Stud.mdf和Stud_log.ldf兩個文件,前者為數(shù)據(jù)庫主文件,后者是日志文件。.51.建立數(shù)據(jù)庫Stud.52.建立數(shù)據(jù)表student和score再展開Stud數(shù)據(jù)庫,右擊下方的“表〞項,在出現(xiàn)的快捷菜單中選擇“新建表〞命令,可以通過交互建立表結構。這里新建student和score兩個表,前者的關鍵字為“學號〞,后者的關鍵字為“學號+課程名〞,它們的表結構分別如圖9.1和9.2所示。這樣在Stud數(shù)據(jù)庫的表項下方出現(xiàn)db.student和dbo.score兩個表項,選中student表,右擊鼠標,在出現(xiàn)的快捷菜單中選擇“翻開表〞,可以輸入表記錄。在student和score表中輸入的記錄分別如圖9.3和9.4所示〔分別對應表9.1和表9.2中的記錄〕。本章后面的例子使用這些樣本數(shù)據(jù)介紹數(shù)據(jù)庫編程方法。.62.建立數(shù)據(jù)表student和score.6圖9.1student表結構圖9.2score表結構.7圖9.1student表結構圖9.2score表結圖9.3student表記錄圖9.4score表記錄.8圖9.3student表記錄圖9.4score表記3.權限設置為了在網(wǎng)頁中訪問Stud數(shù)據(jù)庫,必須給Stud數(shù)據(jù)庫設置一些訪問權限,否那么在網(wǎng)頁運行時出現(xiàn)以下錯誤:無法翻開登錄所請求的數(shù)據(jù)庫"Stud"。登錄失敗。用戶'LCB-PC\ASPNET'登錄失敗。為了簡單,給Stud數(shù)據(jù)庫設置一些公共用戶訪問權限,其操作如下:〔1〕右擊數(shù)據(jù)庫項下的“Stud〞項,在出現(xiàn)的快捷菜單中選擇“屬性〞命令,在出現(xiàn)的“數(shù)據(jù)庫屬性-Stud〞對話框中單擊“選項頁〞中的“權限〞項,此時全為空白項,說明沒有授予任何權限?!?〕單擊“添加〞命令按鈕,在出現(xiàn)的“選擇用戶或角色〞對話框中單擊“瀏覽〞命令按鈕?!?〕在出現(xiàn)的對話框中勾選“[public]〞項,返回到“數(shù)據(jù)庫屬性-Stud〞對話框。.93.權限設置為了簡單,給Stud數(shù)據(jù)庫設置一些公共用戶〔4〕通過勾選“public的顯式權限〞列表中的Delete、Insert、Select、Update的授予項以授予相應權限。如圖9.5所示。.10〔4〕通過勾選“public的顯式權限〞列表中的Dele9.1.3結構化查詢語言〔SQL〕1.SQL語言的組成SQL語言包含查詢、操縱、定義和控制等幾個局部。它們都是通過命令動詞分開的,各種語句類型對應的命令動詞如下:數(shù)據(jù)查詢的命令動詞為SELECT。數(shù)據(jù)定義的命令動詞為CREATE、DROP。數(shù)據(jù)操縱的命令動詞為INSERT、UPDATE、DELETE。數(shù)據(jù)控制的命令動詞為GRANT、REVOKE。.119.1.3結構化查詢語言〔SQL〕.112.數(shù)據(jù)定義語言〔1〕CREATE語句CREATE語句用于建立數(shù)據(jù)表,其根本格式如下:CREATETABLE表名(列名1數(shù)據(jù)類型1[NOTNULL][,列名2數(shù)據(jù)類型2[NOTNULL]]…)〔2〕DROP語句DROP語句用于刪除數(shù)據(jù)表,其根本格式如下:DROPTABLE表名.122.數(shù)據(jù)定義語言.123.數(shù)據(jù)操縱語言〔1〕INSERT語句INSERT語句用于在一個表中添加新記錄,然后給新記錄的字段賦值。其根本格式如下:INSERTINTO表名[(列名1[,列名2,…])]VALUES(表達式1[,表達式2,…]).133.數(shù)據(jù)操縱語言.13〔2〕UPDATE語句UPDATE語句用于新的值更新表中的記錄。其根本格式如下:UPDATE表名SET列名1=表達式1[,SET列名2=表達式2]…WHERE條件表達式〔3〕DELETE語句DELETE語句用于刪除記錄,其根本格式如下:DELETEFROM表名[WHERE條件表達式].14〔2〕UPDATE語句.144.數(shù)據(jù)查詢語句SQL的數(shù)據(jù)查詢語句是使用很頻繁的語句。SELECT的根本格式如下:SELECT字段表FORM表名WHERE查詢條件GROUPBY分組字段HAVING分組條件ORDERBY字段[ASC|DESC]各子句的功能如下:SELECT:指定要查詢的內容。FORM:指定從其中選定記錄的表名。WHERE:指定所選記錄必須滿足的條件。GROUPBY:把選定的記錄分成特定的組。HAVING:說明每個組需要滿足的條件。ORDERBY:按特定的次序將記錄排序。.154.數(shù)據(jù)查詢語句.15【例9.4】查詢student表中“09002〞班所有學生記錄。SELECT*FROMstudentWHERE班號='09002'.16【例9.4】查詢student表中“09002〞班所有學生SELECTstudent.學號,student.姓名,score.課程名,score.分數(shù)FROMstudent,scoreWHEREstudent.學號=score.學號ORDERBYscore.課程名【例9.6】
查詢所有學生的學號、姓名、課程名和分數(shù),要求按課程名排序。.17SELECTstudent.學號,student.姓名,s
【例9.7】
查詢分數(shù)在80~90之間的所有學生的學號、姓名、課程名和分數(shù)。SELECTstudent.學號,student.姓名,score.課程名,score.分數(shù)FROMstudent,scoreWHEREstudent.學號=score.學號ANDscore.分數(shù)BETWEEN80AND90.18【例9.7】查詢分數(shù)在80~90之間的所有學生的學號、【例9.8】
查詢每個班每門課程的平均分。SELECTstudent.班號,score.課程名,AVG(score.分數(shù))AS'平均分'FROMstudent,scoreWHEREstudent.學號=score.學號GROUPBYstudent.班號,score.課程名.19【例9.8】查詢每個班每門課程的平均分。SELECTst【例9.9】
查詢最高分的學生姓名和班號。SELECTstudent.姓名,student.班號FROMstudent,scoreWHEREstudent.學號=score.學號ANDscore.分數(shù)=(SELECTMAX(分數(shù))FROMscore).20【例9.9】查詢最高分的學生姓名和班號。SELECTst9.2ADO.NET模型9.2.1ADO.NET簡介ADO.NET是在.NETFramework上訪問數(shù)據(jù)庫的一組類庫,它利用.NETDataProvider〔數(shù)據(jù)提供程序〕以進行數(shù)據(jù)庫的連接與訪問。通過ADO.NET,數(shù)據(jù)庫程序設計人員能夠很輕易地使用各種對象來訪問符合自己需求的數(shù)據(jù)庫內容。.219.2ADO.NET模型.219.2.2ADO.NET體系結構.229.2.2ADO.NET體系結構.22【說明】ADO.NET是在.NETFramework上訪問數(shù)據(jù)庫的一組類庫。ADO.NET將數(shù)據(jù)庫中的數(shù)據(jù)將通過DataAdapter對象,以XML的格式傳送到客戶端的DataSet對象中,實現(xiàn)數(shù)據(jù)庫的離線操作。DataSet對象被稱為“內存數(shù)據(jù)庫〞,具有DBMS的主要功能?!踩纾篋ataSet對象中含有DataTable對象、DataTable又含有DataRow、DataColum對象……〕客戶端對數(shù)據(jù)的操作都是在本地DataSet對象中完成的。最后,再通過DataAdapter對象“回寫〞到數(shù)據(jù)庫中。ADO.NET也提供“快捷、簡單〞的數(shù)據(jù)讀取方法。如:通過,DataReader對象實現(xiàn)針對查詢結果的只讀操作。.23【說明】.231..NETDataProvider
.NETDataProvider是指訪問數(shù)據(jù)源的一組類庫,主要是為了統(tǒng)一對于各類型數(shù)據(jù)源的訪問方式而設計的一套高效能的類庫。下表給出了.NETDataProvider中包含的4個對象。對象名稱功能說明Connection提供和數(shù)據(jù)源的連接功能。Command提供運行訪問數(shù)據(jù)庫命令,傳送數(shù)據(jù)或修改數(shù)據(jù)的功能,例如運行SQL命令和存儲過程等。DataAdapter是DataSet對象和數(shù)據(jù)源間的橋梁。DataAdapter使用4個Command對象來運行查詢、新建、修改、刪除的SQL命令,把數(shù)據(jù)加載到DataSet,或者把DataSet內的數(shù)據(jù)送回數(shù)據(jù)源。DataReader通過Command對象運行SQL查詢命令取得數(shù)據(jù)流,以便進行高速、只讀、按順序的數(shù)據(jù)瀏覽。.241..NETDataProvider對象名稱功能說明C在.NETFramework中常用的有如下4組數(shù)據(jù)提供程序:〔1〕SQL.NETDataProvider〔2〕OLEDB.NETDataProvider〔3〕ODBC.NETDataProvider〔4〕ORACLE.NETDataProvider用于訪問不同類型的數(shù)據(jù)庫資源?!咀⒁狻咳绻捎肧QL.NETDataProvider訪問SQLServer數(shù)據(jù)源,那么相應的ADO.NET對象名稱之前都要加上“SQL〞。如:SqlConnection、SqlCommand、SqlDataAdapter、SqlDataReader。.25在.NETFramework中常用的有如下4組數(shù)據(jù)提供程序2.DataSetDataSet〔數(shù)據(jù)集〕是ADO.NET離線數(shù)據(jù)訪問模型中的核心對象,主要使用時機是在內存中暫存并處理各種從數(shù)據(jù)源中所取回的數(shù)據(jù)。DataSet其實就是一個存放在內存中的數(shù)據(jù)暫存區(qū),這些數(shù)據(jù)必須通過DataAdapter對象與數(shù)據(jù)庫進行數(shù)據(jù)交換。在DataSet內部允許同時存放一個或多個不同的數(shù)據(jù)表〔DataTable〕對象。這些數(shù)據(jù)表是由數(shù)據(jù)列和數(shù)據(jù)域所組成的,并包含有主索引鍵、外部索引鍵、數(shù)據(jù)表間的關系〔Relation〕信息以及數(shù)據(jù)格式的條件限制〔Constraint〕。.262.DataSet.26.27.279.2.3ADO.NET數(shù)據(jù)庫的訪問流程ADO.NET數(shù)據(jù)庫訪問的一般流程如下:〔1〕建立Connection對象,創(chuàng)立一個數(shù)據(jù)庫連接?!?〕在建立連接的根底上可以使用Command對象對數(shù)據(jù)庫發(fā)送查詢、新增、修改和刪除等命令?!?〕創(chuàng)立DataAdapter對象,從數(shù)據(jù)庫中取得數(shù)據(jù)?!?〕創(chuàng)立DataSet對象,將DataAdapter對象填充到DataSet對象〔數(shù)據(jù)集〕中?!?〕如果需要,可以重復操作,一個DataSet對象可以容納多個數(shù)據(jù)集合?!?〕關閉數(shù)據(jù)庫連接?!?〕在DataSet上進行所需要的操作。假設數(shù)據(jù)集的數(shù)據(jù)要輸出到窗體中或者網(wǎng)頁上,那么可將DataSet綁定道數(shù)據(jù)控件上。.289.2.3ADO.NET數(shù)據(jù)庫的訪問流程.289.3ADO.NET的數(shù)據(jù)訪問對象9.3.1SqlConnection對象在數(shù)據(jù)訪問中首先必須是建立數(shù)據(jù)庫的物理連接。
.NETDataProvider使用SqlConnection類的對象建立與SQLServer數(shù)據(jù)庫的物理連接。.299.3ADO.NET的數(shù)據(jù)訪問對象.29
1.SqlConnection類SqlConnection類的屬性說明ConnectionString獲取或設置用于打開數(shù)據(jù)庫的字符串。ConnectionTimeout獲取在嘗試建立連接時終止嘗試并生成錯誤之前所等待的時間。Database獲取當數(shù)據(jù)庫連接打開后,要使用的數(shù)據(jù)庫的名稱。DataSource獲取數(shù)據(jù)源的服務器名或文件名。Provider獲取在連接字符串的“Provider=”子句中指定的SQL提供程序的名稱。State獲取連接的當前狀態(tài)。.301.SqlConnection類SqlConnectioSqlConnection類的方法說明Open()使用ConnectionString所指定的屬性設置打開數(shù)據(jù)庫連接。Close()關閉與數(shù)據(jù)庫的連接。這是關閉任何打開連接的首選方法。CreateCommand()創(chuàng)建并返回一個與SqlConnection關聯(lián)的SqlCommand對象。ChangeDatabase(StringDBN)為打開的SqlConnection更改當前數(shù)據(jù)庫。.31SqlConnection類的方法說明Open()2.建立連接字符串ConnectionString建立連接字符串的方式是:先創(chuàng)立一個SqlConnection對象,將其ConnectionString屬性設置為如下值:"DataSource=localhost;InitialCatalog=Stud; IntegratedSecurity=False;UserId=sa;Password=123456"
【注】:另外一種ConnectionString格式:“server=(local);database=Stud;user=sa;password=123456".322.建立連接字符串ConnectionString"DatConnectionString中的常用的關鍵字值有效名稱如下:DataSource〔或Server或Address〕:要連接的SQLServer實例的效勞器名稱或網(wǎng)絡地址。InitialCatalog〔或Database〕:數(shù)據(jù)庫的名稱。IntegratedSecurity〔或Trusted_Connection〕:為False〔默認值〕時,將在連接中指定用戶ID和密碼。為True時,將使用當前的Windows帳戶憑據(jù)進行身份驗證??勺R別的值為True、False、yes、no以及與True等效的sspi〔強烈推薦〕。.33ConnectionString中的常用的關鍵字值有效名稱如ConnectionString中的常用的關鍵字值有效名稱如下:PersistSecurityInfo:為False〔默認值〕或no〔強烈推薦〕時,如果連接是翻開的或者一直處于翻開狀態(tài),那么平安敏感信息〔如密碼〕將不會作為連接的一局部返回。重置連接字符串將重置包括密碼在內的所有連接字符串值??勺R別的值為True、False、yes和no。UserID:SQLServer登錄帳戶。Password〔或Pwd〕:SQLServer帳戶登錄的密碼。在指定連接字符串后,就可使用Open方法翻開連接。.34ConnectionString中的常用的關鍵字值有效名稱如【例9.10】設計一個說明直接建立連接字符串的連接過程的網(wǎng)頁WebForm9-1.aspx。其設計步驟如下:〔1〕在Myaspnet網(wǎng)站的ch9文件夾中添加一個名稱為WebForm9-1的空網(wǎng)頁?!?〕其設計界面如以下圖所示,其中包含一個Button控件Button1和一個標簽Label1,將該網(wǎng)頁的StyleSheetTheme屬性設置為Blue。.35【例9.10】設計一個說明直接建立連接字符串的連在該網(wǎng)頁上設計如下事件過程:protectedvoidButton1_Click(objectsender,EventArgse){
stringmystr;
SqlConnectionmyconn=newSqlConnection();
mystr="DataSource=localhost;InitialCatalog=Stud;"+ "IntegratedSecurity=False;UserId=sa;Password=123456";
myconn.ConnectionString=mystr;
myconn.Open();
if(myconn.State==ConnectionState.Open)
Label1.Text="成功連接到SQLServer數(shù)據(jù)庫";
else
Label1.Text="不能連接到SQLServer數(shù)據(jù)庫";
myconn.Close();}.36在該網(wǎng)頁上設計如下事件過程:.363.將連接字符串存放在Web.config文件中可以在Web.config文件中保存用于連接數(shù)據(jù)庫的連接字符串,再通過對Web.config文件加密,從而到達保護連接字符串的目的。例如,在<configuration>節(jié)中插入以下代碼:<connectionStrings> <removename="myconnstring"/> <addname="myconnstring" connectionString="DataSource=localhost; InitialCatalog=Stud;IntegratedSecurity=False; UserId=sa;Password=123456;" providerName="System.Data.SqlClient"/></connectionStrings>.373.將連接字符串存放在Web.config文件中.37這樣,以下代碼自動獲取Web.config文件中的連接字符串myconnstring:stringmystr=
ConfigurationManager.ConnectionStrings["myconnstring"].ToString();SqlConnectionmyconn=newSqlConnection();myconn.ConnectionString=mystr;myconn.Open();.38這樣,以下代碼自動獲取Web.config文件中的連接字也可以在Web.config文件的<configuration>節(jié)中插入以下代碼:
<appSettings>
<removekey="myconnestring"/>
<addkey="myconnestring"
value="DataSource=localhost;InitialCatalog=Stud;
IntegratedSecurity=False;UserId=sa;Password=123456;"/>
</appSettings>.39也可以在Web.config文件的<configuratio這樣,以下代碼自動獲取Web.config文件中的連接字符串myconnstring:stringmystr=ConfigurationManager.AppSettings["myconnstring"];SqlConnectionmyconn=newSqlConnection();myconn.ConnectionString=mystr;myconn.Open();.40這樣,以下代碼自動獲取Web.config文件中的連接字9.3.2SqlCommand對象建立數(shù)據(jù)連接之后,就可以執(zhí)行數(shù)據(jù)訪問操作和數(shù)據(jù)操縱操作了。一般對數(shù)據(jù)庫的操作被概括為CRUD—Create、Read、Update和Delete。在ADO.NET中定義SqlCommand類去執(zhí)行這些操作。SqlCommand類的屬性說明CommandText獲取或設置要對數(shù)據(jù)源執(zhí)行的SQL語句或存儲過程。CommandTimeout獲取或設置在終止執(zhí)行命令的嘗試并生成錯誤之前的等待時間。CommandType獲取或設置一個值,表示Command對象的類型(表9.10)Connection數(shù)據(jù)命令對象所使用的連接對象Parameters參數(shù)集合(SqlParameterCollection)1.SqlCommand類的屬性和方法.419.3.2SqlCommand對象SqlCommandSqlCommand類的方法說明CreateParameter創(chuàng)建SqlParameter對象的新實例。ExecuteNonQuery()針對Connection執(zhí)行SQL語句并返回受影響的行數(shù)。一般用于執(zhí)行Delete、Update、Insert命令ExecuteReader()將CommandText發(fā)送到Connection并生成一個SqlDataReader。用于執(zhí)行Select命令,且希望返回一個DataReader對象。ExecuteScalar()執(zhí)行查詢,并返回查詢結果集中第一行的第一列。忽略其他列或行。.42SqlCommand類的方法說明CreateParam2.創(chuàng)立SqlCommand對象SqlCommand類的主要構造函數(shù)如下:SqlCommand();SqlCommand(cmdText);SqlCommand(cmdText,connection);其中,cmdText參數(shù)指定查詢命令的文本。connection參數(shù)是一個SqlConnection,它表示到SQLServer數(shù)據(jù)庫的連接。.432.創(chuàng)立SqlCommand對象.43例如,以下語句創(chuàng)立一個SqlCommand對象mycmd:SqlConnectionmyconn=newSqlConnection();mystr="DataSource=localhost;InitialCatalog=Stud;"+ "IntegratedSecurity=False;UserId=sa;Password=123456";myconn.ConnectionString=mystr;myconn.Open();SqlCommandmycmd=newSqlCommand("SELECT*FROMstudent",myconn);.44例如,以下語句創(chuàng)立一個SqlCommand對象mycmd3.通過SqlCommand對象返回單個值在SqlCommand的方法中,ExecuteScalar方法執(zhí)行返回單個值的SQL命令。例如,如果想獲取Student數(shù)據(jù)表中學生的總人數(shù),那么可以使用這個方法執(zhí)行SQL查詢:SELECTCount(*)FROMstudent.453.通過SqlCommand對象返回單個值.45【例9.11】設計一個通過SqlCommand對象求score表中的平均分的網(wǎng)頁WebForm9-2.aspx。解:其設計步驟如下:〔1〕在Myaspnet網(wǎng)站的ch9文件夾中添加一個名稱為WebForm9-2的空網(wǎng)頁?!?〕其設計界面如以下圖所示,其中包含一個HTML標簽、一個文本框TextBox1和一個Button控件Button1,將該網(wǎng)頁的StyleSheetTheme屬性設置為Blue。.46【例9.11】設計一個通過SqlCommand對象求在該網(wǎng)頁上設計如下事件過程:protectedvoidButton1_Click(objectsender,EventArgse){
stringmystr,mysql;
SqlConnectionmyconn=newSqlConnection();
SqlCommandmycmd=newSqlCommand();
mystr="DataSource=localhost;InitialCatalog=Stud;"+ "IntegratedSecurity=False;UserId=sa;Password=123456";
myconn.ConnectionString=mystr;
myconn.Open();
mysql="SELECTAVG(分數(shù))FROMscore";
mycmd.CommandText=mysql;
mycmd.Connection=myconn;
TextBox1.Text=mycmd.ExecuteScalar().ToString();
myconn.Close();}.47在該網(wǎng)頁上設計如下事件過程:protectedvoid網(wǎng)頁運行界面單擊工具欄中的按鈕運行本網(wǎng)頁,再單擊“求平均分〞命令按鈕,其運行結果如以下圖所示,表示所有學生平均分為78。.48網(wǎng)頁運行界面單擊工具欄中的按鈕運行本網(wǎng)頁,再單擊“求平4.通過SqlCommand對象執(zhí)行修改操作在SqlCommand的方法中,ExecuteNonQuery方法執(zhí)行不返回數(shù)據(jù)結果的SQL命令。該方法主要用來更新數(shù)據(jù),通常使用它來執(zhí)行UPDATE、INSERT和DELETE語句。該方法不返回行,對于UPDATE、INSERT和DELETE語句,返回值為該命令所影響的行數(shù),對于所有其他類型的語句,返回值為-1。.494.通過SqlCommand對象執(zhí)行修改操作.49【例9.12】設計一個通過SqlCommand對象將score表中所有分數(shù)增5分和減5分的網(wǎng)頁WebForm9-3。解:其設計步驟如下:〔1〕在Myaspnet網(wǎng)站的ch9文件夾中添加一個名稱為WebForm9-3的空網(wǎng)頁。〔2〕其設計界面如以下圖所示,其中包含兩個Button控件Button1和Button2,將該網(wǎng)頁的StyleSheetTheme屬性設置為Blue。網(wǎng)頁設計界面.50【例9.12】設計一個通過SqlCommand對象將在該網(wǎng)頁上設計如下事件過程:publicpartialclassWebForm9_3:System.Web.UI.Page{
SqlCommandmycmd=newSqlCommand(); //公共字段
SqlConnectionmyconn=newSqlConnection(); //公共字段
protectedvoidPage_Load(objectsender,EventArgse)
{
stringmystr;
mystr="DataSource=localhost;InitialCatalog=Stud;"+ "IntegratedSecurity=False;UserId=sa;Password=123456";
myconn.ConnectionString=mystr;
myconn.Open();
}
protectedvoidPage_Unload()
{ myconn.Close(); //關閉本網(wǎng)頁時關閉連接
}.51在該網(wǎng)頁上設計如下事件過程:publicpartialc
protectedvoidButton1_Click(objectsender,EventArgse) {
stringmysql;
mysql="UPDATEscoreSET分數(shù)=分數(shù)+5";
mycmd.CommandText=mysql;
mycmd.Connection=myconn;
mycmd.ExecuteNonQuery(); }
protectedvoidButton2_Click(objectsender,EventArgse) {
stringmysql;
mysql="UPDATEscoreSET分數(shù)=分數(shù)-5";
mycmd.CommandText=mysql;
mycmd.Connection=myconn;
mycmd.ExecuteNonQuery(); }}.52 protectedvoidButton1_Click(單擊工具欄中的按鈕運行本網(wǎng)頁,單擊“分數(shù)+5〞命令按鈕,此時score表中所有分數(shù)都增加5分,為了保存score表不變,再單擊“分數(shù)-5〞命令按鈕,此時score表中所有分數(shù)都恢復成原來的數(shù)據(jù),其運行界面如以下圖所示。.53單擊工具欄中的按鈕運行本網(wǎng)頁,單擊“分數(shù)+5〞命令按鈕5.在SqlCommand對象的SQL命令中指定參數(shù)SQL.NETDataProvider支持執(zhí)行命令中包含參數(shù)的情況,也就是說,可以使用包含參數(shù)的數(shù)據(jù)命令或存儲過程執(zhí)行數(shù)據(jù)篩選操作和數(shù)據(jù)更新等操作,其主要流程如下:〔1〕創(chuàng)立Connection對象,并設置相應的屬性值?!?〕翻開Connection對象?!?〕創(chuàng)立Command對象并設置相應的屬性值,其中CommandText屬性中含有占位符?!?〕創(chuàng)立參數(shù)對象,將建立好的參數(shù)對象添加到Command對象的Parameters集合中?!?〕為參數(shù)對象賦值?!?〕執(zhí)行數(shù)據(jù)命令。〔7〕關閉相關對象。.545.在SqlCommand對象的SQL命令中指定參數(shù).5例如,下面的更新語句:“UPDATEcourseSETcName=@NameWHEREcID=@ID〞其中course是一個課程表,有cID〔課程號〕和cName〔課程名〕兩個列。該命令是將指定cID的課程記錄的cName替換成指定的值。其中@ID和@Name均為參數(shù),在執(zhí)行該語句之前需要為參數(shù)賦值??梢允褂靡韵旅钕騊arameters參數(shù)集合中添加參數(shù)值:mycmd.Parameters.Add("@Name",SqlType.VarChar,10).Value=Name1;mycmd.Parameters.Add("@ID",SqlType.VarChar,5).Value=ID1;.55例如,下面的更新語句:可以使用以下命令向Paramet【例9.13】設計一個通過SqlCommand對象求出指定學號學生的平均分的網(wǎng)頁WebForm9-4。解:其設計步驟如下:〔1〕在Myaspnet網(wǎng)站的ch9文件夾中添加一個名稱為WebForm9-4的空網(wǎng)頁?!?〕其設計界面如以下圖所示,其中包含兩個HTML標簽、兩個文本框〔TextBox1和TextBox2〕和一個Button控件Button1,將該網(wǎng)頁的StyleSheetTheme屬性設置為Blue。網(wǎng)頁設計界面.56【例9.13】設計一個通過SqlCommand對象求在該網(wǎng)頁上設計如下事件過程:protectedvoidButton1_Click(objectsender,EventArgse){
stringmystr,mysql;
SqlConnectionmyconn=newSqlConnection();
SqlCommandmycmd=newSqlCommand();
mystr="DataSource=localhost;InitialCatalog=Stud;"+
"IntegratedSecurity=False;UserId=sa;Password=123456";
myconn.ConnectionString=mystr;
myconn.Open();
mysql="SELECTAVG(分數(shù))FROMscoreWHERE學號=@no";
mycmd.CommandText=mysql;
mycmd.Connection=myconn;SqlParameterp1=newSqlParameter("@no",SqlDbType.VarChar,5);
mycmd.Parameters.Add(p1);p1.value=TextBox1.Text.Trim();
TextBox2.Text=mycmd.ExecuteScalar().ToString();
myconn.Close();}.57在該網(wǎng)頁上設計如下事件過程:protectedvoidB網(wǎng)頁運行界面上述代碼先建立連接,然后通過ExecuteScalar方法執(zhí)行SQL命令,通過“@no〞替換返回指定學號的平均分。運行本網(wǎng)頁,輸入學號8,單擊“求平均分〞命令按鈕,運行界面如以下圖所示。.58網(wǎng)頁運行界面上述代碼先建立連接,然后通過ExecuteS9.3.3SqlDataReader對象當執(zhí)行返回結果集的命令時,需要一個方法從結果集中提取數(shù)據(jù)。處理結果集的方法有兩個:〔1〕使用SqlDataReader對象〔數(shù)據(jù)閱讀器〕;〔2〕同時使用SqlDataAdapter對象〔數(shù)據(jù)適配器〕+DataSet對象。.599.3.3SqlDataReader對象.591.SqlDataReader類的屬性和方法屬性說明FieldCount獲取當前行中的列數(shù)IsClosed獲取一個布爾值,指出SqlDataReader對象是否關閉RecordsAffected獲取執(zhí)行SQL語句時影響到的行數(shù)方法說明Read()將SqlDataReader對象前進到下一行并讀取,返回布爾值指示是否有多行Close()關閉SqlDataReader對象IsDBNull返回布爾值,表示列是否包含NULL值NextResult()將SqlDataReader對象移到下一個結果集,返回布爾值指示該結果集是否有多行GetBoolean(inti)返回指定列的值,類型為布爾值GetString(inti)返回指定列的值,類型為字符串GetByte(inti)返回指定列的值,類型為字節(jié)GetInt32(inti)返回指定列的值,類型為整型值GetDouble(inti)返回指定列的值,類型為雙精度值GetDataTime(inti)返回指定列的值,類型為日期時間值GetOrdinal(inti)返回指定列的序號或數(shù)字位置(首列序號為0)GetBoolean(inti)返回指定列的值,類型為對象.601.SqlDataReader類的屬性和方法屬性說明Fie2.創(chuàng)立SqlDataReader對象在ADO.NET中,SqlDataReader類沒有提供構造函數(shù)。人們通常調用Command類的ExecuteReader方法,這個方法將返回一個DataReader對象。例如,以下代碼創(chuàng)立一個SqlDataReader對象myreader:SqlCommandcmd=newSqlCommand(CommandText,ConnectionObject);SqlDataReadermyreader=cmd.ExecuteReader();注意:SqlDataReader對象不能使用new來創(chuàng)立。.612.創(chuàng)立SqlDataReader對象.613.遍歷SqlDataReader對象的記錄
當ExecuteReader方法返回DataReader對象時,當前光標的位置是第一條記錄的前面。必須調用SqlDataReader對象的Read方法把光標移動到第一條記錄,然后,第一條記錄將變成當前記錄。如果SqlDataReader對象中包含的記錄不止一條,Read方法就返回一個Boolean值true。想要移動到下一條記錄,需要再次調用Read方法。重復上述過程,直到最后一條記錄,此時Read方法將返回false。經常使用While循環(huán)來遍歷記錄:
while(myreader.Read())
{ //讀取數(shù)據(jù)
}
只要Read方法返回的值為true,就可以訪問當前記錄中包含的字段。.623.遍歷SqlDataReader對象的記錄.624.訪問字段中的值〔1〕Item屬性每一個DataReader對象都定義了一個Item屬性,此屬性返回一個由字段序號或字段名指定的字段值。字段序號總是基于0開始編號的。如:SqlDataReatermyreader=mycmd.ExecuteReader();Stringstr1=myreader[1];Stringstr2=myreader[“Cname〞];.634.訪問字段中的值.63〔2〕Get系列方法每一個DataReader對象都定義了一組Get方法,那些方法將返回適當類型的值。例如,GetInt32方法把返回的字段值作為32位整數(shù),每一個Get方法都以字段序號為參數(shù)。例如,:myreader.GetInt32[0];myreader.GetString[1];.64〔2〕Get系列方法.64【例9.14】設計一個通過SqlDataReader對象在一個列表框中輸出所有學生記錄的網(wǎng)頁WebForm9-5。解:其設計步驟如下:〔1〕在Myaspnet網(wǎng)站的ch9文件夾中添加一個名稱為WebForm9-5的空網(wǎng)頁。〔2〕其設計界面如以下圖所示,其中包含一個列表框ListBox1〔Rows屬性設為8〕和一個Button控件Button1,將該網(wǎng)頁的StyleSheetTheme屬性設置為Blue。網(wǎng)頁設計界面.65【例9.14】設計一個通過SqlDataReader對在該網(wǎng)頁上設計如下事件過程:protectedvoidButton1_Click(objectsender,EventArgse){
stringmystr,mysql;
SqlConnectionmyconn=newSqlConnection();
SqlCommandmycmd=newSqlCommand();
mystr="DataSource=localhost;InitialCatalog=Stud;"+ "IntegratedSecurity=False;UserId=sa;Password=123456";
myconn.ConnectionString=mystr;
myconn.Open();
mysql="SELECT*FROMstudent";
mycmd.CommandText=mysql;
mycmd.Connection=myconn;
SqlDataReadermyreader=mycmd.ExecuteReader();
ListBox1.Items.Add("學號姓名性別民族班號");
ListBox1.Items.Add("=================================");
while(myreader.Read()) //循環(huán)讀取信息
ListBox1.Items.Add(String.Format("{0}{1}{2}{3}{4}",
myreader[0].ToString(),myreader[1].ToString(),
myreader[2].ToString(),myreader[3].ToString(),
myreader[4].ToString()));
myconn.Close();
myreader.Close();}.66在該網(wǎng)頁上設計如下事件過程:protectedvoidB網(wǎng)頁運行界面單擊工具欄中的按鈕運行本網(wǎng)頁,單擊“輸出所有學生〞命令按鈕,運行界面如以下圖所示。.67網(wǎng)頁運行界面單擊工具欄中的按鈕運行本網(wǎng)頁,單擊“輸出所9.3.4SqlDataAdapter對象SqlDataAdapter對象〔數(shù)據(jù)適配器〕可以執(zhí)行SQL命令以及調用存儲過程、傳遞參數(shù),最重要的是取得數(shù)據(jù)結果集,在數(shù)據(jù)庫和DataSet對象之間來回傳輸數(shù)據(jù)。數(shù)據(jù)庫DataSet對象SqlDataAdapter對象.689.3.4SqlDataAdapter對象數(shù)據(jù)庫DataS屬性說明SelectCommand獲取或設置SQL語句用于選擇數(shù)據(jù)源中的記錄。該值為SqlCommand對象InsertCommand獲取或設置SQL語句用于將新記錄插入到數(shù)據(jù)源中。該值為SqlCommand對象UpdateCommand獲取或設置SQL語句用于更新數(shù)據(jù)源中的記錄。該值為SqlCommand對象DeleteCommand獲取或設置SQL語句用于從數(shù)據(jù)集中刪除記錄。該值為SqlCommand對象AcceptChangesDuringFill獲取或設置一個值,該值指示在任何Fill操作過程中時,是否接受對行所做的修改AcceptChangesDuringUpdate獲取或設置在Update期間是否調用AcceptChangesFillLoadOption獲取或設置LoadOption,后者確定適配器如何從SqlDataReader中填充DataTableMissingMappingAction確定傳入數(shù)據(jù)沒有匹配的表或列時需要執(zhí)行的操作MissingSchemaAction確定現(xiàn)有DataSet架構與傳入數(shù)據(jù)不匹配時需要執(zhí)行的操作TableMappings獲取一個集合,它提供源表和DataTable之間的主映射1.SqlDataAdapter類的屬性和方法.69屬性說明SelectCommand獲取或設置SQL語句用于選方法說明Fill()用來自動執(zhí)行SqlDataAdapter對象的SelectCommand屬性中相對應的SQL語句,以檢索數(shù)據(jù)庫中的數(shù)據(jù),然后更新數(shù)據(jù)集中的DataTable對象,如果DataTable對象不存在,則創(chuàng)建它FillSchema將DataTable添加到DataSet中,并配置架構以匹配數(shù)據(jù)源中的架構GetFillParameters獲取當執(zhí)行SQLSELECT語句時由用戶設置的參數(shù)Update()用來自動執(zhí)行UpdateCommand、InsertCommand或DeleteCommand屬性相對應的SQL語句,以使數(shù)據(jù)集中的數(shù)據(jù)來更新數(shù)據(jù)庫。.70方法說明Fill()用來自動執(zhí)行SqlDataAdapte2.創(chuàng)立SqlDataAdapter對象SqlDataAdapter類有以下構造函數(shù):SqlDataAdapter();SqlDataAdapter(SqlCommandcmd);SqlDataAdapter(selectCommandText);SqlDataAdapter(selectCommandText,selectConnection);SqlDataAdapter((selectCommandText,selectConnectionString);例如:stringmystr,mysql;SqlConnectionmyconn=newSqlConnection();mystr="DataSource=localhost;InitialCatalog=Stud;"+ "IntegratedSecurity=False;UserId=sa;Password=123456";myconn.ConnectionString=mystr;myconn.Open();mysql="SELECT*FROMstudent";SqlDataAdaptermyadapter=newSqlDataAdapter(mysql,myconn);myconn.Close();.712.創(chuàng)立SqlDataAdapter對象例如:.713.使用Fill方法
Fill方法用于向DataSet對象填充從數(shù)據(jù)源中讀取的數(shù)據(jù)。調用Fill方法的語法格式有多種,常見的格式如下:
SqlDataAdapter對象名.Fill(DataSet對象名,"數(shù)據(jù)表名");
其中第一個參數(shù)是數(shù)據(jù)集對象名,表示要填充的數(shù)據(jù)集對象;第二個參數(shù)是一個字符串,表示在本地緩沖區(qū)中建立的臨時表的表名。例如,以下語句用course表數(shù)據(jù)填充數(shù)據(jù)集mydataset1:
SqlDataAdapter1.Fill(mydataset1,"course");.723.使用Fill方法.724.使用Update方法
Update方法用于將數(shù)據(jù)集DataSet對象中的數(shù)據(jù)按InsertCommand屬性、DeleteCommand屬性和UpdateCommand屬性所指定的要求更新數(shù)據(jù)源,即調用3個屬性中所定義的SQL語句來更新數(shù)據(jù)源。
Update方法常見的調用格式如下。
SqlDataAdapter對象名.Update(DataSet對象名,[數(shù)據(jù)表名]);
其中第一個參數(shù)是數(shù)據(jù)集對象名,表示要將哪個數(shù)據(jù)集對象中的數(shù)據(jù)更新到數(shù)據(jù)源中;第二個參數(shù)是一個字符串,表示臨時表的名稱。.734.使用Update方法.739.4DataSet對象
DataSet是ADO.NET數(shù)據(jù)庫訪問組件的核心,主要是用來支持ADO.NET的不連貫連接及數(shù)據(jù)分布。它的數(shù)據(jù)駐留內存,可以保證和數(shù)據(jù)源無關的一致性的關系模型,并用于多個異種數(shù)據(jù)源的數(shù)據(jù)操作。9.4.1DataSet對象概述.749.4DataSet對象.74創(chuàng)立DataSet對象有多種方法:①設計工具②也可以使用程序代碼來創(chuàng)立DataSet對象。使用程序代碼創(chuàng)立DataSet對象的語法格式如下:DataSet對象名=newDataSet();或DataSet對象名=newDataSet(dataSetName);其中,dataSetName為一個字符串,用于指出DataSet的名稱。.75創(chuàng)立DataSet對象有多種方法:.75DataTable對象9.4.2Dataset對象的屬性和方法屬性說明CaseSensitive獲取或設置一個值,該值指示DataTable對象中的字符串比較是否區(qū)分大小寫DataSetName獲取或設置當前DataSet的名稱Relations獲取用于將表鏈接起來并允許從父表瀏覽到子表的關系的集合Tables獲取包含在DataSet中的DataTable表的集合DataSetTables:DataTable集合DataTable對象Columns:DataColumn集合Rows:DataRow集合DataTable對象DataColumn對象DataTable對象DataRow對象.76DataTable對象9.4.2Dataset對象的屬性和DataSet對象的方法說明AcceptChanges提交自加載此DataSet或上次調用AcceptChanges以來對其進行的所有更改Clear移除DataSet對象中的所有表中的數(shù)據(jù)CreateDataReader為每個DataTable返回帶有一個結果集的DataTableReader,順序與Tables集合中表的顯示順序相同GetChanges獲取DataSet的副本,該副本包含自上次加載以來或自調用AcceptChanges以來對該數(shù)據(jù)集進行的所有更改HasChanges獲取一個值,該值指示DataSet是否有更改,包括新增行、已刪除的行或已修改的行Merge將指定的DataSet、DataTable或DataRow對象的數(shù)組合并到當前的DataSet或DataTable中Reset將DataSet重置為初始狀態(tài).77DataSet對象的方法說明AcceptChanges提交自9.4.3Tables集合和DataTable對象
DataSet對象的Tables屬性由表組成,每個表是一個DataTable對象。實際上,每一個DataTable對象代表了數(shù)據(jù)庫中的一個表,每個DataTable數(shù)據(jù)表都由相應的行和列組成。
可以通過索引來引用Tables集合中的一個表,例如,Tables[i]表示第i個表,其索引值從0開始編號。.789.4.3Tables集合和DataTable對象.781.Tables集合的屬性和方法Tables集合的屬性說明CountTables集合中表個數(shù)Item檢索Tables集合中指定索引處的表Tables集合的方法說明Add向Tables集合中添加一個表AddRange向Tables集合中添加一個表的數(shù)組Clear移除Tables集合中的所有表Contains確定指定表是否在Tables集合中Equqls判斷是否等于當前對象GetType獲取當前實例的TypeInsert將一個表插入到Tables集合中指定的索引處IndexOf檢索指定的表在Tables集合中的索引Remove從Tables集合中移除指定的表RemoveAt移除Tables集合中指定索引處的表.791.Tables集合的屬性和方法Tables集合的屬性說明2.DataTable對象
一個DataTable對象包含一個Columns屬性即列集合,和一個Rows屬性即行集合。屬性說明CaseSensitive指示表中的字符串比較是否區(qū)分大小寫ChildRelations獲取此DataTable的子關系的集合Columns獲取屬于該表的列的集合Constraints獲取由該表維護的約束的集合DataSet獲取此表所屬的DataSetDefaultView返回可用于排序、篩選和搜索DataTable的DataViewExtendedProperties獲取自定義用戶信息的集合ParentRelations獲取該DataTable的父關系的集合PrimaryKey獲取或設置充當數(shù)據(jù)表主鍵的列的數(shù)組Rows獲取屬于該表的行的集合TableName獲取或設置DataTable的名稱.802.DataTable對象屬性說明CaseSensitiv方法說明AcceptChanges提交自上次調用AcceptChanges以來對該表進行的所有更改Clear清除所有數(shù)據(jù)的DataTableCompute計算用來傳遞篩選條件的當前行上的給定表達式CreateDataReader返回與此DataTable中的數(shù)據(jù)相對應的DataTableReaderImportRow將DataRow復制到DataTable中,保留任何屬性設置以及初始值和當前值Merge將指定的DataTable與當前的DataTable合并NewRow創(chuàng)建與該表具有相同架構的新DataRowSelect獲取DataRow對象的數(shù)組.81方法說明AcceptChanges提交自上次調用Accept3.建立包含在DataSet中的表建立包含在數(shù)據(jù)集中的表的方法主要有以下兩種?!?〕利用SqlDataAdapter的Fill方法自動建立DataSet中的DataTable對象先通過SqlDataAdapter對象從數(shù)據(jù)源中提取記錄數(shù)據(jù),然后調用其Fill方法,將所提取的記錄存入DataSet中對應的表內,如果DataSet中不存在對應的表,F(xiàn)ill方法會先建立表再將記錄填入其中。例如,以下語句向DataSet對象myds中添加一個表course及其包含的數(shù)據(jù)記錄:DataSetmyds=newDataSet();SqlDataAdaptermyda=newSqlDataAdapter("SELECT*Fromcourse",myconn);myda.Fill(myds,"course");.823.建立包含在DataSet中的表.82〔2〕將建立的DataTable對象添加到DataSet中(較少適用)先建立DataTable對象,然后調用DataSet的表集合屬性Tables的Add方法,將DataTable對象添加到DataSet對象中。例如,以下語句向DataSet對象myds中添加一個表,并返回表的名稱course:DataSetmyds=newDataSet();DataTablemydt=newDataTable("course");myds.Tables.Add(mydt);textBox1.Text=myds.Tables["course"].TableName;//文本框中顯示“course〞.83〔2〕將建立的DataTable對象添加到DataSet中(Columns集合和DataColumn對象
Rows集合和DataRow對象
Relations集合和DataRelation對象以下內容自學:.84Columns集合和DataColumn對象以下內容自學9.5數(shù)據(jù)源控件9.5.1數(shù)據(jù)源控件概述數(shù)據(jù)源控件允許用戶使用不同類型的數(shù)據(jù)源,如數(shù)據(jù)庫、XML文件或中間層業(yè)務對象。數(shù)據(jù)源控件連接到數(shù)據(jù)源,從中檢索數(shù)據(jù),并使得其他控件可以綁定到數(shù)據(jù)源而無需代碼。數(shù)據(jù)源控件還支持修改數(shù)據(jù)。.859.5數(shù)據(jù)源控件.85.86.869.5.2SqlDataSource控件SqlDataSource控件對應的類為SqlDataSource,它表示到Web應用程序中數(shù)據(jù)庫的直接連接。數(shù)據(jù)綁定控件〔如GridView、DetailsView和FormView控件〕可以使用SqlDataSource控件自動檢索和修改數(shù)據(jù)。可以將用來選擇、插入、更新和刪除數(shù)據(jù)的命令指定為SqlDataSource控件的一局部,并讓該控件自動執(zhí)行這些操作。用戶無需編寫代碼來創(chuàng)立連接并指定用于查詢和更新數(shù)據(jù)庫的命令。.879.5.2SqlDataSource控件.871.SqlDataSource控件的屬性、方法和事件SqlDataSource控件的構造函數(shù)如下:SqlDataSource()。初始化SqlDataSource類的新實例。SqlDataSource(stringconnectionString,stringselectCommand)。使用指定的連接字符串和Select命令初始化SqlDataSource類的新實例。SqlDataSource(stringproviderName,stringconnectionString,stringselectCommand)。使用指定的連接字符串和Select命令初始化SqlDataSource類的新實例。.881.SqlDataSource控件的屬性、方法和事件Sql表9.34SqlDataSource控件的常用屬性及其說明名稱說明ConnectionString獲取或設置特定于ADO.NET提供程序的連接字符串,SqlDataSource控件使用該字符串連接基礎數(shù)據(jù)庫。DataSourceMode獲取或設置SqlDataSource控件獲取數(shù)據(jù)所用的數(shù)據(jù)檢索模式。DeleteCommand獲取或設置SqlDataSource控件從基礎數(shù)據(jù)庫刪除數(shù)據(jù)所用的SQL字符串。DeleteCommandType獲取或設置一個值,該值指示DeleteCommand屬性中的文本是SQL語句還是存儲過程的名稱。DeleteParameters從與SqlDataSource控件相關聯(lián)的SqlDataSourceView對象獲取包含DeleteCommand屬性所使用的參數(shù)的參數(shù)集合。FilterExpression獲取或設置調用Select方法時應用的篩選表達式。FilterParameters獲取與FilterExpression字符串中的任何參數(shù)占位符關聯(lián)的參數(shù)的集合。InsertCommand獲取或設置SqlDataSource控件將數(shù)據(jù)插入基礎數(shù)據(jù)庫所用的SQL字符串。InsertCommandType獲取或設置一個值,該值指示InsertCommand屬性中的文本是SQL語句還是存儲過程的名稱。.89表9.34SqlDataSource控件的常用屬性及其說InsertParameters從與SqlDataSource控件相關聯(lián)的SqlDataSourceView對象獲取包含InsertCommand屬性所使用的參數(shù)的參數(shù)集合。ProviderName獲取或設置.NETFramework數(shù)據(jù)提供程序的名稱,SqlDataSource控件使用該提供程序來連接基礎數(shù)據(jù)源。SelectCommand獲取或設置SqlDataSource控件從基礎數(shù)據(jù)庫檢索數(shù)據(jù)所用的SQL字符串。SelectCommandType獲取或設置一個值,該值指示SelectCommand屬性中的文本是SQL查詢還是存儲過程的名稱。SelectParameters從與SqlDataSource控件相關聯(lián)的SqlDataSourceView對象獲取包含SelectCommand屬性所使用的參數(shù)的參數(shù)集合。SortParameterName獲取或設置存儲過程參數(shù)的名稱,在使用存儲過程執(zhí)行數(shù)據(jù)檢索時,該存儲過程參數(shù)用于對檢索到的數(shù)據(jù)進行排序。UpdateCommand獲取或設置SqlDataSource控件更新基礎數(shù)據(jù)庫中的數(shù)據(jù)所用的SQL字符串。UpdateCommandType獲取或設置一個值,該值指示UpdateCommand屬性中的文本是SQL語句還是存儲過程的名稱。UpdateParam
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 急癥搶救操作流程
- 針對復習的CFA試題及答案傳授
- 2024年特許金融分析師考試必考試題及答案
- 《第十四章 整式的乘法與因式分解》專題復習與單元檢測試卷
- 追隨百歲老人探尋長壽秘訣
- 心肌梗死的主要護理診斷
- 2024年特許金融分析師考試考生心聲分享試題及答案
- 山東省郯城第一中學2024-2025學年高三下學期第二次模擬考試地理試題(原卷版)
- 湖北省襄陽市第四中學2024-2025學年高一下學期2月月考地理試題(原卷版)
- 教學課件說明范文
- 希沃白板5考題及答案
- 青島市2025年高三年級第一次適應性檢測語文試題及參考答案
- 2025年藥物制劑工(中級)考試題庫(附答案)
- DB11∕T1481-2024生產經營單位生產安全事故應急預案評審規(guī)范
- 地鐵保安服務投標方案(技術方案)
- 《電力系統(tǒng)及其組成部分》課件
- 《讀讀童謠和兒歌》(一-四測)閱讀練習題
- 人力資源總監(jiān)數(shù)據(jù)述職報告
- 2025年湖北國土資源職業(yè)學院單招職業(yè)技能測試題庫及答案一套
- 七年級數(shù)學下冊 第8章 單元測試卷(蘇科版 2025年春)
- 2024年煤礦安全管理人員考試試題庫(含答案)
評論
0/150
提交評論