![C#數(shù)據(jù)庫編程_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-8/10/b50200b7-ccc6-441a-ad18-a2c0b9be7570/b50200b7-ccc6-441a-ad18-a2c0b9be75701.gif)
![C#數(shù)據(jù)庫編程_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-8/10/b50200b7-ccc6-441a-ad18-a2c0b9be7570/b50200b7-ccc6-441a-ad18-a2c0b9be75702.gif)
![C#數(shù)據(jù)庫編程_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-8/10/b50200b7-ccc6-441a-ad18-a2c0b9be7570/b50200b7-ccc6-441a-ad18-a2c0b9be75703.gif)
![C#數(shù)據(jù)庫編程_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-8/10/b50200b7-ccc6-441a-ad18-a2c0b9be7570/b50200b7-ccc6-441a-ad18-a2c0b9be75704.gif)
![C#數(shù)據(jù)庫編程_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-8/10/b50200b7-ccc6-441a-ad18-a2c0b9be7570/b50200b7-ccc6-441a-ad18-a2c0b9be75705.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、2021/3/1112021/3/1122021/3/113 ADO(Active Data Objects)是Microsoft開發(fā)的面向?qū)ο蟮臄?shù)據(jù)訪問庫,ADO.NET是ADO的后續(xù)技術(shù),提供對SQL SEVER等數(shù)據(jù)源的一致訪問。數(shù)據(jù)使用者可以通過ADO.NET來連接到這些數(shù)據(jù)源(SQL SERVERACCESSOLE DB等),并檢索、操作和更新數(shù)據(jù)。 2021/3/114 ADO.NET DataSet是ADO.NET結(jié)構(gòu)的核心組建, DataSet中包括一個或多個DataTable對象的集合,這些對象由數(shù)據(jù)行和數(shù)據(jù)列以及主鍵、外鍵、約束和有關(guān)DataTable對象中數(shù)據(jù)的關(guān)系信息組
2、成。 ADO.NET的另外一個核心元素是.NET Framawork數(shù)據(jù)提供程序,能夠?qū)崿F(xiàn)數(shù)據(jù)操作和對數(shù)據(jù)的快速訪問。其中,Connection對象提供與數(shù)據(jù)源的連接;Command對象使你能夠訪問用于返回數(shù)據(jù)、修改數(shù)據(jù)、運(yùn)行存儲過程以及發(fā)送或檢索參數(shù)信息的數(shù)據(jù)庫命令;DataReader對象從數(shù)據(jù)源中提供高性能的數(shù)據(jù)流;DataAdapter對象提供連接DataSet對象和數(shù)據(jù)源的橋梁。2021/3/115 目前,.NET Framawork附帶了兩個數(shù)據(jù)提供程序:SQL Server 和OLE DB數(shù)據(jù)提供程序。 OLE DB數(shù)據(jù)提供程序位于System.Data.OleDb空間, SQL
3、 Server 數(shù)據(jù)提供程序位于System.Data.SqlClient命名空間。以下是每個數(shù)據(jù)提供程序所包含的主要類:OLE DB提供程序SQL Server 提供程序2021/3/116 現(xiàn)在編寫一個名為GetStudent的訪問SQL SERVER數(shù)據(jù)庫的控制臺應(yīng)用程序,對學(xué)生信息表中的信息進(jìn)行讀?。僭O(shè)學(xué)生信息表已經(jīng)建立)。using System;using System.Collections.Generic;using System.Data;using System.Data.SqlClient;2021/3/117namespace GetStudent class Pro
4、gram static void Main( ) string connStr=“server=(local); Initial Catalog=students;user Id=sa;password=1234”; SqlConnection conn=new SqlConnection(connStr); conn.Open( ); SqlCommand cmd=conn.CreateCommand( ); cmd.CommandText=“Select ID,sName from student”; SqlDataReader reader=cmd.ExecuteReader( );20
5、21/3/118string output;while(reader.Read( ) output=string .Format(“學(xué)生 0t的學(xué)號是1”,reader.GetString(1),reader.GetString(0); Console.Writeline(output);reader.Close( ); conn.Close( ); 2021/3/119(1)導(dǎo)入數(shù)據(jù)訪問的名稱空間,表示在該程序中將使用SQL Server 數(shù)據(jù)提供程序。using System;using System.Collections.Generic;using System.Data;using
6、System.Data.SqlClient;2021/3/1110(2)在Main主方法中,首先定義了一個字符串類型的connStr變量,用來存放連接SQL SERVER的數(shù)據(jù)庫連接字符串。接著新建了一個SqlConnection對象,用于連接數(shù)據(jù)庫。string connStr=“server=(local); Initial Catalog=students;user Id=sa;password=1234”;SqlConnection conn=new SqlConnection(connStr);(3)調(diào)用conn對象的Open方法打開數(shù)據(jù)庫連接。conn.Open( );2021/3
7、/1111(4)新建SqlCommand對象,該對象用于向數(shù)據(jù)庫發(fā)出命令。通過調(diào)用數(shù)據(jù)庫連接對象conn的CreateCommand方法來建立SqlCommand對象。SqlCommand cmd=conn.CreateCommand( );(5)有了命令對象cmd后,指定該命令對象的屬性CommandText。cmd.CommandText=“Select ID,sName from student”;(6)命令對象cmd設(shè)置完畢,可以向數(shù)據(jù)庫發(fā)出命令,執(zhí)行在CommandText中定義的操作。cmd對象的執(zhí)行結(jié)果保存在SqlDataReader對象reader中。SqlDataReader
8、 reader=cmd.ExecuteReader( );2021/3/1112(7)在reader中已經(jīng)保存了從數(shù)據(jù)庫讀取的信息,現(xiàn)在的任務(wù)是輸出它們。從數(shù)據(jù)讀取器中獲取數(shù)據(jù)一般用while循環(huán),Read()方法一直返回真值,直到reader的指針指向最后一條記錄的后面。while(reader.Read( ) output=string .Format(“學(xué)生 0t的學(xué)號是1”,reader.GetString(1),reader.GetString(0); Console.Writeline(output);(8) 數(shù)據(jù)讀取以后,應(yīng)該關(guān)閉數(shù)據(jù)讀取器和數(shù)據(jù)庫連接對象。reader.Clos
9、e( ); conn.Close( );2021/3/1113 從前面例子的分析中,得出通過ADO.NET訪問數(shù)據(jù)庫的一般步驟如下:(1)建立數(shù)據(jù)庫連接對象(Connection對象);(2)打開數(shù)據(jù)庫連接(Connection對象的Open方法);(3)建立數(shù)據(jù)庫命令對象,指定命令對象所使用的連接對象(Command);(4)指定命令對象的命令屬性(CommandText屬性);(5)執(zhí)行命令(Command的方法,如ExecuteReader);(6)操作返回結(jié)果(對SqlReaderData對象進(jìn)行讀?。?;(7)關(guān)閉數(shù)據(jù)庫連接。2021/3/1114 在數(shù)據(jù)訪問中必須建立到數(shù)據(jù)庫的物理連
10、接。每個數(shù)據(jù)提供程序都包含自己特有的Connection對象。當(dāng)使用OLE DB數(shù)據(jù)提供程序時,要使用System.Data.OleDb空間的OleDbConnection對象, 使用SQL Server 數(shù)據(jù)提供程序時,要使用位于System.Data.SqlClient命名空間的SqlConnection對象。在程序開始導(dǎo)入名稱空間System.Data.SqlClient和System.Data.OleDb。2021/3/1115 1、SqlConnection類SqlConnection類有兩個構(gòu)造函數(shù),一個不帶參數(shù),一個接受連接字符串??梢允褂靡韵聝煞N方法進(jìn)行實(shí)例化連接。string
11、 connStr=“server=(local); Initial Catalog=students;user Id=sa;password=1234”; SqlConnection conn=new SqlConnection(connStr); conn.Open( );或者SqlConnection conn=new SqlConnection(“server=(local); Initial Catalog=students;user Id=sa;password=1234”;); conn.Open( );2021/3/1116 注意:只有當(dāng)一個連接關(guān)閉后才能把兩外一個不同的連接字符
12、串賦值給Connection對象。 如果不知道該對象是打開的還是關(guān)閉的,可以檢查對性的State屬性,它的值可以是Open,也可以是Closed。2021/3/1117 2、連接字符串ConnectionString連接字符串包含由一些“屬性名=值”對組成的集合,每個“屬性名=值”對都由分號隔開。string connStr=“server=(local); Initial Catalog=students;user Id=sa;password=1234”;其中,server為服務(wù)器地址,值local表示使用本地機(jī)器。server關(guān)鍵字也可以用Data Source來代替,即字符串可以寫成s
13、tring connStr=“Data Source=(local); Initial Catalog=students;user Id=sa;password=1234”;2021/3/1118 Initial Catalog指明了連接使用的數(shù)據(jù)庫,user ID和password則分別指明了訪問數(shù)據(jù)庫時使用的用戶名和密碼。 如果在安裝數(shù)據(jù)庫軟件時選擇的身份驗(yàn)證方式為windows身份驗(yàn)證模式,則應(yīng)使用如下連接字符串:string connStr=“Data Source=(local); Initial Catalog=students; Integrated Security=SSPI”
14、;Integrated Security=SSPI表示連接時使用的是windows身份驗(yàn)證模式。2021/3/1119 3、SqlConnection的方法SqlConnection由自己的方法,如前面使用過的Open( )和Closed( )方法。其他方法還有:CreateCommand 創(chuàng)建并返回一個與SqlConnection關(guān)聯(lián)的SqlCommand對象。ChangeDatabase 為打開的SqlConnection更改當(dāng)前數(shù)據(jù)庫。注意:數(shù)據(jù)庫連接必須小心,應(yīng)該在最晚的時候建立連接,在最早的時候關(guān)閉連接,以釋放占用的內(nèi)存和網(wǎng)絡(luò)帶寬資源。2021/3/1120 4、連接SQL SERV
15、ER的數(shù)據(jù)訪問實(shí)例(1)啟動visual studio .net,新建一個windows 應(yīng)用程序。(2)從工具欄中拖動一個Button控件到頁面中,將ID設(shè)為btnconnect,Text屬性為“點(diǎn)擊連接數(shù)據(jù)庫”。(3)在Form1.cs文件中添加名稱空間using System.Data.SqlClient;(4)雙擊btnConnect控件,在Click事件相關(guān)處理程序btnconnect_click中輸入以下代碼:2021/3/1121 try SqlConnection conn=new SqlConnection( );conn.ConnectionString=“Data Sou
16、rce=(local);user id=sa;password=1234; initial Catalog=student;”;conn.Open( );if(conn.State=ConnectionState.Open) MessageBox.Show(“連接已經(jīng)打開”);conn.Close( );if(conn.State=ConnectionState.Closed) MessageBox.Show(“連接已經(jīng)關(guān)閉”);catch(Exception e) MessageBox.Show(“連接失敗,原因可能是“+e.Message);2021/3/11225、按ctrl+f5運(yùn)行項(xiàng)
17、目,單擊表單中的”點(diǎn)擊連接數(shù)據(jù)庫“按鈕,如果數(shù)據(jù)庫連接成功,則將依次彈出兩個對話框。6、如果連接不成功,則會得到提示錯誤信息的頁面。2021/3/1123 1、說明目前在網(wǎng)絡(luò)流行的小型數(shù)據(jù)庫access,就應(yīng)該使用OLE DB .NET 數(shù)據(jù)提供程序來訪問數(shù)據(jù),該程序在System.Data.OleDb空間中定義。使用OLE DB .NET 數(shù)據(jù)提供程序與使用SQL SERVER.NET數(shù)據(jù)提供程序的方式十分類似,需要注意的是連接字符串有所不同,連接到access數(shù)據(jù)庫的字符串格式如下:Provider=Microsoft.Jet.OLEDB.4.0;Data Source=mydb.mdb;
18、user id=;password=;前面兩項(xiàng)為必須項(xiàng),如果數(shù)據(jù)庫沒有密碼,后面兩者都可以省略,在實(shí)際項(xiàng)目中,Data Source還必須轉(zhuǎn)化為絕對路徑。2021/3/1124(1)啟動visual studio .net,新建一個windows應(yīng)用程序。(2)在表單Form1中添加按鈕btnconnection,屬性設(shè)置同前面例子。(3)在在Form1.cs文件中添加名稱空間using System.Data.OleDb;(4)雙擊btnConnect控件,在Click事件相關(guān)處理程序btnconnect_click中輸入以下代碼:(5)運(yùn)行程序。2021/3/1125 tryOleDbCo
19、nnection conn=new OleDbConnection( );string connStr=Provider=Microsoft.Jet.OLEDB.4.0;Data Source=;connStr+=Datadb.mdb;MessageBox.Show(當(dāng)前連接字符串為:n+connStr+n);conn.ConnectionString=connStr;conn.Open( );if(conn.State=ConnectionState.Open)MessageBox.Show(連接成功);conn.Close() ;if(conn.State=ConnectionState.
20、Closed)MessageBox.Show(關(guān)閉成功); catch( Exception ex)MessageBox.Show(連接失敗,原因是:n+ex.Message);2021/3/1126 建立數(shù)據(jù)連接之后,就可以執(zhí)行數(shù)據(jù)訪問操作和數(shù)據(jù)操縱操作了,一般對數(shù)據(jù)庫的操作被概括為CRUD-Create Read Update和Delete。ADO.NET中定義Command類去執(zhí)行這些操作。 在.NET中存在SqlCommand和OleDbCommand兩種類,兩者類似。2021/3/1127 數(shù)據(jù)命令通常包括的內(nèi)容有:一個連接(Connection):命令對象所使用的連接對象;使用它與
21、數(shù)據(jù)庫通信。命令的名稱或文本(CommandText):設(shè)置要對數(shù)據(jù)源執(zhí)行的SQL語句或存儲過程。命令類型(CommandType):指明命令的類型,是存儲過程還是普通SQL文本;參數(shù)(Patameters):參數(shù)集合,可以分別設(shè)置或者讀取這些參數(shù)。2021/3/1128 其中,CommandText的內(nèi)容和CommandType有關(guān),當(dāng)類型為StoreProcedure時, CommandText屬性為存儲過程的名稱,當(dāng)類型為TableDirect時, CommandText屬性為要訪問的表的名稱,當(dāng)類型為Text時,則CommandText屬性為SQL語句。默認(rèn)為Text。2021/3/1
22、1291、 SqlCommand對象的創(chuàng)建方法一:SqlCommand cmd=new SqlCommand( ); /創(chuàng)建命令對象cmd.Connection=ConnectionObject;/將已有連接賦給命令對象cmd.CommandText=CommandText;/將已有命名文本賦給命令對象CommandText可以是從數(shù)據(jù)庫檢索數(shù)據(jù)的SQL Select語句: string CommandText=“select * from student”;也可以是一個存儲過程的名稱:string CommandText=“GetAllStudent”;cmd.CommandType=Com
23、mandType.StoreProcedure;2021/3/1130方法二:將命令文本放入構(gòu)造函數(shù)作為參數(shù):SqlCommand cmd=new SqlCommand(CommandText);cmd.Connection=ConnectionObject;方法三:直接將命名文本和連接對象放入構(gòu)造函數(shù)SqlCommand cmd=new SqlCommand(CommandText,ConnectionObject);方法四:可以直接使用Connection對象的CreateCommand方法SqlCommand cmd=conn.CreateCommand( );cmd.CommandTe
24、xt=“Select ID,sName from student”;2021/3/11312、 SqlCommand對象的方法SqlCommand對象提供了四個方法:ExecuteNonQuery:執(zhí)行不返回結(jié)果的命令,通常使用這個命令執(zhí)行插入、更新或者刪除操作;ExecuteScalar:執(zhí)行返回單個值的命令;ExecuteReader:執(zhí)行命令,將結(jié)果集填充DataReader對象;ExecuteXmlReader: SqlCommand對象特有的方法,該方法執(zhí)行將返回XML字符串的命令,返回一個包含所返回的XML的System.Xml.XmlReader對象。2021/3/11321)E
25、xecuteScalar方法執(zhí)行返回單個值的命令,例如,想獲取數(shù)據(jù)庫中學(xué)生的總?cè)藬?shù),可以使用這個方法執(zhí)行SQL查詢:Select count(*) from student。ExecuteScalar方法使用舉例:(1)新建windows應(yīng)用程序,在表單中加入按鈕控件btnGetCount,以及l(fā)abel 控件lblResult。(2)雙擊btnGetCount控件,輸入以下代碼: (3) 對代碼中綠色部分進(jìn)行修改,即可以完成對OLE DB數(shù)據(jù)庫的操作。2021/3/1133string commandText=“select count(*) from student”;string con
26、nString=“Date Source=(local);Initial Catalog=students;user id=sa;password=1234”;SqlConnection conn=new SqlConnection( );conn.ConnectionString=connString;SqlCommand cmd=new SqlCommand(commandText,conn);conn.Open( );string count=cmd.ExecuteScalar( ).ToString( );conn.Close( );this.lblResult.Text=“共有”+c
27、ount+”學(xué)生!”;2021/3/11342)ExecuteNonQuery方法主要用來更新數(shù)據(jù),通常使用它來執(zhí)行Update、Insert、Delete語句。該方法返回值意義如下:對于Update、Insert、Delete語句返回值為該命令所影響的行數(shù),對于其它類型的語句,返回值為-1。ExecuteNonQuery方法使用舉例:string updateQuery=“UPdate student Set sName=小李”+”Where ID=200131500145”;SqlConnection conn=new SqlConnection( );conn.ConnectionStr
28、ing=connectionString;SqlCommand cmd=new SqlCommand(updateQuery,conn);conn.Open( ); int RecordsAffected=cmd.ExecuteNonQuery( ); conn.Close( );2021/3/1135UpdateUpdate、InsertInsert、DeleteDelete語句中參數(shù)構(gòu)造方式語句中參數(shù)構(gòu)造方式在updateQuery中的更新參數(shù)應(yīng)該根據(jù)用戶實(shí)際輸入的信息進(jìn)行處理,要達(dá)到這個目的就必須根據(jù)用戶輸入的數(shù)據(jù)來構(gòu)造命令,構(gòu)造命令有多種形式。(1)字符串拼接方式假設(shè)已經(jīng)將用戶輸入的數(shù)
29、據(jù)保存到了變量中:string userName=“小李“;string user id=“200131500145”;則命令可以構(gòu)造如下:string updateQuery=“Update student Set sName= ”+userName+” ”+”Where ID= “+user id+” “;2021/3/1136UpdateUpdate、InsertInsert、DeleteDelete語句中參數(shù)構(gòu)造方式語句中參數(shù)構(gòu)造方式(2)參數(shù)化方式l 在SQL SERVER .NET中指定參數(shù)當(dāng)命令文本在指定具體命令時,必須指出哪部分是參數(shù),可變參數(shù)要加前綴。Update stude
30、nt Set sName=userName where ID=user idstring updateQuery=“Update student Set sName=userName”+”Where ID=user id”;SqlConnection conn=new SqlConnection(connectionString);SqlCommand cmd=new SqlCommand(updateQuery,conn);2021/3/1137 有了包含參數(shù)的Command對象,需要為命令中的每一個參數(shù)創(chuàng)建一個Parameter對象。SqlCommand類提供了一個Parameters集合
31、屬性,用以為命令保存所有的參數(shù)。通過調(diào)用該集合的Add方法,在集合中添加一個新的參數(shù)。cmd.Parameters.Add(“userName”,userName);cmd.Parameters.Add(“user id”,user id);Add方法中第一個參數(shù)為命令中的參數(shù)名,后面第二個參數(shù)則是用于定義的變量,保存了用戶輸入的信息。帶參數(shù)的命令設(shè)置好后可以和往常一樣執(zhí)行ExecuteNonQuery方法。2021/3/1138l在OLE DB .NET中指定參數(shù) OLE DB .NET并不支持指定參數(shù)的方法,但是可以在查詢中使用?來作為占位符來指定參數(shù)將出現(xiàn)的位置。Update stude
32、nt Set sName=? Where ID=? 由于只是使用了占位符,在添加Parameter對象時必須按照參數(shù)出現(xiàn)的順序添加,如:OleDbCommand cmd=new OleDbCommand(updateQuery,conn);cmd.Parameters.Add(“sName”,userName);cmd.Parameters.Add(“ID”,user id); 此時userName將會賦值給第一個參數(shù),user id將會賦值給第二個參數(shù),兩句代碼如果調(diào)換前后順序,則user id的值賦值給第一個參數(shù),userName的值賦值給第二個參數(shù),即Add方法的第一個參數(shù)沒有意義。20
33、21/3/1139新建WINDOWS應(yīng)用程序,將表單設(shè)計(jì)如下:表單中各個對象為label1,label2,textbox1,textbox2,button1,button2。2021/3/1140在Form1.cs中導(dǎo)入名稱空間System.Data.SqlClient,然后添加一個CheckInfo方法,對輸入的數(shù)據(jù)進(jìn)行檢查。bool CheckInfo( ) if(this.textbox1.Text.Trim( )=“”) MessageBox.Show(“學(xué)號不完整“); return false; else if(this.textbox2.Text.Trim( )=“”) Mess
34、ageBox.Show(“姓名不完整”); return false; return true; 2021/3/1141雙擊button1,輸入以下代碼:if(this.CheckInfo( ) string userName=this.textbox2.Text.Trim( ); string user id=this.textbox1.Text.Trim( );SqlConnection conn=new SqlConnection( );conn.ConnectionString=“Data Source=(local);Initial Catalog=student;user id=s
35、a;password=1234”;string updateQuery=“update student Set sName=”+userName+” “+”Where ID=”+user id+” ”;SqlCommand cmd=new SqlCommand(updateQuery,conn);2021/3/1142conn.Open( );int RecordsAffected=com.ExecuteNonQuery( );conn.Close( );2021/3/1143雙擊button2,輸入以下代碼:if(this.CheckInfo( ) string userName=this.
36、textbox2.Text.Trim( ); string user id=this.textbox1.Text.Trim( );SqlConnection conn=new SqlConnection( );conn.ConnectionString=“Data Source=(local);Initial Catalog=student;user id=sa;password=1234”;string updateQuery=“update student Set sName=userName Where ID=user id ”;SqlCommand cmd=new SqlCommand
37、(updateQuery,conn);2021/3/1144cmd.Parameters.Add(new SqlParameter(“userName”,userName)cmd.Parameters.Add(new SqlParameter(“user id”,user id);conn.Open( );int RecordsAffected=com.ExecuteNonQuery( );conn.Close( );2021/3/1145string insertQuery=“Insert into student (ID,sName,sGrade,sSex,sEmail,sPhone,sA
38、ddress)”+“Values(2000131500145,小張,男,,”+宏博公寓)”;SqlConnection conn=new SqlConnection(connectionString);SqlCommand cmd=new SqlCommand(insertQuery,conn);conn.Open( );int RecordsAffected=cmd.ExecuteNonQuery( );conn.Close( );2021/3/1146string deleteQuery=“Delete from student where ID=2001315
39、00145”;SqlConnection conn=new SqlConnection(connectionString);SqlCommand cmd=new SqlCommand(deleteQuery,conn);conn.Open( );int RecordsAffected=cmd.ExecuteNonQuery( );conn.Close( );2021/3/1147 當(dāng)執(zhí)行返回結(jié)果集的命令時,需要一個方法從結(jié)果集中提取數(shù)據(jù)。處理結(jié)果集的方法有兩個:第一,使用數(shù)據(jù)閱讀器;第二,同時使用數(shù)據(jù)適配器(Data Adapter)和數(shù)據(jù)集DataSet。 數(shù)據(jù)閱讀器DataReader類最
40、常見的用法是檢索SQL查詢或存儲過程返回記錄,它是一個連接的、只向前的和只讀的結(jié)果集。也就是說,當(dāng)使用數(shù)據(jù)閱讀器時,必須保持連接處于打開狀態(tài),而且只能從頭到尾遍歷記錄集,不能在某條記錄處停下來向回移動,記錄是只讀的,數(shù)據(jù)閱讀器不提供任何修改數(shù)據(jù)庫記錄的方法。2021/3/1148DataReader類沒有提供公有的構(gòu)造函數(shù),通常調(diào)用Command類的ExecuteReader方法來返回一個DataReader對象。SqlCommand cmd=new SqlCommand(CommandText,ConnectionObject);SqlDataReader reader=cmd.Execut
41、eReader( );當(dāng)數(shù)據(jù)閱讀器打開時,不能使用對應(yīng)的連接對象執(zhí)行其他任何任務(wù);當(dāng)閱讀完數(shù)據(jù)閱讀器的記錄或不再需要數(shù)據(jù)閱讀器時,應(yīng)該立即關(guān)閉數(shù)據(jù)閱讀器。reader.Close( );2021/3/1149ExecuteReader方法執(zhí)行可以帶上在System.Data空間中定義的CommandBehavior枚舉類型的參數(shù),執(zhí)行一些想要怎樣使用結(jié)果的指令。如下面的代碼表示當(dāng)關(guān)閉數(shù)據(jù)閱讀器時數(shù)據(jù)連接也同時被關(guān)閉,無需再次關(guān)閉數(shù)據(jù)連接。SqlDataReader reader=cmd.ExecuteReader(CommandBehavior.CloseConnection);2021/3/
42、1150當(dāng)ExecuteReader方法返回DataReader對象時,當(dāng)前光標(biāo)的位置在第一條記錄的前面,必須調(diào)用閱讀器的Read方法把光標(biāo)移動到第一條記錄,然后,第一條記錄變成當(dāng)前記錄。如果數(shù)據(jù)閱讀器包含的記錄不止一條,Read方法就返回一個Boolean值true。想要移動到下一條記錄,需要再次調(diào)用Read方法。重復(fù)該過程指導(dǎo)最后一條記錄,這時Read方法將返回false。經(jīng)常使用while循環(huán)來遍歷記錄:while(reader.read( ) 讀取數(shù)據(jù) 只要Read方法返回的值為true,就可以訪問當(dāng)前記錄中包含的字段。2021/3/1151有兩種方法可以訪問記錄中的字段,第一種是It
43、em屬性,此屬性返回由字段索引或字段名指定的字段值;第二種是Get方法,此方法返回由字段索引指定的字段的值。(1)Item屬性Item屬性是Data Reader類的索引,總是基于0開始編號的。可以把包含字段名的字符串傳入Item屬性,也可以把指定字段索引的32位整數(shù)傳遞給Item屬性。2021/3/1152如:當(dāng)執(zhí)行完SQL(select ID,sName from student)查詢后 使用以下任意方法都可以得到兩個被返回字段的值。object ID=reader“ID”;object sName=reader“sName”;或者object ID=reader0;object sNam
44、e=reader1;注意:在使用數(shù)據(jù)時,需要自己負(fù)責(zé)類型轉(zhuǎn)換:int ID=(int)reader0; 如果轉(zhuǎn)換錯誤將拋出異常。2021/3/1153(2)Get方法每一個DataReader類都定義了一組Get方法,這些方法將返回適當(dāng)類型的值。在上面的例子中,還可以使用以下代碼來訪問字段的值:int ID=reader.GetInt32(0);string sName=reader.GetString(1);2021/3/1154DataReader 實(shí)例()新建項(xiàng)目(WINDOWS應(yīng)用程序)。()雙擊,進(jìn)入事件。()在中添加命名空間。()在事件中添加代碼:2021/3/1155string message=“ “;OleDbConnection conn=new OleDbConnection() ;conn.ConnectionString=Provider=Microsoft.Jet.OLEDB.4.0;Data Source=“+ Dat
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 團(tuán)知識競賽活動方案8篇
- 2025年醫(yī)療委托服務(wù)協(xié)議樣本
- 上海市松江區(qū)汽車租賃服務(wù)合同模板
- 2025年冬季供暖系統(tǒng)承包協(xié)議
- 2025年經(jīng)營權(quán)讓渡協(xié)議第十七案
- 2025年寫字樓租賃合同續(xù)租協(xié)議書
- 2025年砂洗機(jī)項(xiàng)目申請報告模稿
- 2025年醫(yī)師專業(yè)技能提升合作協(xié)議書范本
- 2025年藥效學(xué)研究服務(wù)項(xiàng)目申請報告
- 2025年鄉(xiāng)村住宅修建工程協(xié)議
- 考古繪圖緒論課件
- 小耳畸形課件
- 新人教版初中初三中考數(shù)學(xué)總復(fù)習(xí)課件
- 機(jī)械制造有限公司組織架構(gòu)圖模板
- 嘩啦啦庫存管理系統(tǒng)使用說明
- 8.3 摩擦力 同步練習(xí)-2021-2022學(xué)年人教版物理八年級下冊(Word版含答案)
- 初中足球選拔測試標(biāo)準(zhǔn)
- 《現(xiàn)代漢語詞匯》PPT課件(完整版)
- 生理學(xué)教學(xué)大綱
- 環(huán)保鐵1215物質(zhì)安全資料表MSDS
- “君子教育”特色課程的探索
評論
0/150
提交評論