ADONET查詢和檢索數(shù)據(jù).ppt_第1頁(yè)
ADONET查詢和檢索數(shù)據(jù).ppt_第2頁(yè)
ADONET查詢和檢索數(shù)據(jù).ppt_第3頁(yè)
ADONET查詢和檢索數(shù)據(jù).ppt_第4頁(yè)
ADONET查詢和檢索數(shù)據(jù).ppt_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

ADO.NET連接數(shù)據(jù)庫(kù),西源軟件培訓(xùn)中心,回顧,.NET framework 中的 ADO.NET 是一組允許應(yīng)用程序與數(shù)據(jù)庫(kù)交互,以便檢索和更新信息的類 DataSet 和 .NET 數(shù)據(jù)提供程序是 ADO.NET 的兩個(gè)主要組件 每種 .NET 數(shù)據(jù)提供程序都是由以下四個(gè)對(duì)象組成: Connection Command DataAdapter DataReader Connection 對(duì)象用于建立應(yīng)用程序與數(shù)據(jù)庫(kù)之間的連接 Command 對(duì)象允許向數(shù)據(jù)庫(kù)傳遞請(qǐng)求,檢索和操縱數(shù)據(jù)庫(kù)中的數(shù)據(jù) 事務(wù)處理是一組數(shù)據(jù)操作,這些操作要么必須全部成功,要么必須全部失敗,以保證數(shù)據(jù)的一致性和完整性,問(wèn)題,ADO.NET的兩個(gè)主要組成部分是? ADO.NET中數(shù)據(jù)提供程序包含哪幾個(gè)對(duì)象? Command返回值有哪幾種? 對(duì)數(shù)據(jù)庫(kù)的操作一般分成哪幾個(gè)步驟? 事務(wù)處理一般分成哪幾步驟?舉例說(shuō)明在什么情況下采用事務(wù)處理?,目標(biāo),理解并使用數(shù)據(jù)集對(duì)象 理解 DataAdapter 對(duì)象 理解 DataReader對(duì)象,DataSet,DataSet,是存儲(chǔ)從數(shù)據(jù)庫(kù)檢索到的數(shù)據(jù)的對(duì)象,是零個(gè)或多個(gè)表對(duì)象的集合,這些表對(duì)象由數(shù)據(jù)行和列、約束和有關(guān)表中數(shù)據(jù)關(guān)系的信息組成,不直接與數(shù)據(jù)庫(kù)交互,既可容納數(shù)據(jù)庫(kù)的數(shù)據(jù),也可以容納非數(shù)據(jù)庫(kù)的數(shù)據(jù)源,DataSet 類的層次結(jié)構(gòu),DataSet,DataColumn,DataRow,DataTable,DataSet,DataSet 層次結(jié)構(gòu)中的類,數(shù)據(jù)集的工作原理,客戶端,服務(wù)器,數(shù)據(jù)集,將數(shù)據(jù)發(fā)送到數(shù)據(jù)集,客戶端修改數(shù)據(jù)集,將數(shù)據(jù)集傳遞給客戶端,將修改后的數(shù)據(jù)集傳遞給服務(wù)器,客戶端向服務(wù)器請(qǐng)求數(shù)據(jù),數(shù)據(jù)集的類型,數(shù)據(jù)集的類型,類型化數(shù)據(jù)集,非類型化數(shù)據(jù)集,它是一個(gè)生成類,繼承了基類 DataSet 的所有方法、事件和屬性,表和列只能以集合的形式公開,而不能用于借助 XML 結(jié)構(gòu)文件派生新類,使用類型化數(shù)據(jù)集訪問(wèn)列,string employeeName; employeeName = dsEmployees.Emp0.EmpName;,從 dsEmployees 數(shù)據(jù)集的 Emp 表中第一個(gè)記錄返回 EmpName 列,然后將其存儲(chǔ)在 employeeName 字符串變量中,使用非類型化數(shù)據(jù)集訪問(wèn)列,string employeeName; employeeName = dsEmployees.Tables“Emp“.Rows0“EmpName“;,使用 Tables 集合返回 EmpName 列,使用 C# 代碼創(chuàng)建數(shù)據(jù)集,數(shù)據(jù)集實(shí)例是由 DataSet 構(gòu)造函數(shù)創(chuàng)建的 數(shù)據(jù)集的名稱是可選的,不需要指定 如果沒(méi)有指定名稱,則以默認(rèn)名稱 NewDataSet 創(chuàng)建數(shù)據(jù)集,DataSet empDS = new DataSet(“EmployeeDetails“);,DataTable、DataColumn和DataRow,數(shù)據(jù)集中的數(shù)據(jù)以 DataTable 對(duì)象的形式存儲(chǔ) DataTable 類屬于 System.Data 命名空間,DataTable objStudentTable = new DataTable(“Students“);,創(chuàng)建 DataTable 對(duì)象的實(shí)例,DataSet studentDS = new DataSet(); DataTable objStudentTable = studentDS.Tables.Add(“Students“);,創(chuàng)建 DataTable 的實(shí)例,然后將其添加到數(shù)據(jù)集的 Tables 集合中,DataTable、DataColumn和DataRow,DataColumn 對(duì)象定義 DataTable 的列 DataTable 的 Columns 屬性含有對(duì) DataColumn 對(duì)象的引用,DataTable objStudentTable = new DataTable(“Students“); DataColumn objStudentNumber = objStudentTable.Columns.Add (“ StudentNo “,typeof(Int32); objStudentNumber.AllowDBNull = false; objStudentNumber.DefaultValue = 25; objStudentTable.Columns.Add(“StudentName“,typeof(Int32); objStudentTable.Columns.Add(“StudentMarks“,typeof(Double);,使用多個(gè) DataColumn 對(duì)象創(chuàng)建 DataTable,DataTable、DataColumn和DataRow,DataRow 對(duì)象表示 DataTable 中的實(shí)際數(shù)據(jù),/定義表結(jié)構(gòu),為Students表添加學(xué)號(hào)、姓名、分?jǐn)?shù)三列 DataTable objStudentTable = new DataTable(“Students“); DataColumn objStudentNumber = new DataColumn(); objStudentNumber.DataType = objStudentTable.Columns.Add (“ StudentNo “,typeof(string); objStudentNumber.AllowDBNull = false; objStudentNumber.DefaultValue = 25; objStudentTable.Columns.Add(“StudentName“,typeof(string); objStudentTable.Columns.Add(“StudentMarks“,typeof(Double); /向表中填充數(shù)據(jù) DataRow objStudentRow; objStudentRow= objStudentTable.NewRow(); objStudentRow“StudentNo“=101; objStudentRow“StudentName”=“張三“; objStudentRow“StudentMarks“=55; objStudentTable.Rows.Add(objStudentRow);,在 DataTable 對(duì)象中新建 DataRow,定義主鍵,表中的主鍵用于對(duì)記錄進(jìn)行唯一標(biāo)識(shí) DataTable 的 PrimaryKey 屬性接受含有一個(gè)或多個(gè) DataColumn 對(duì)象的數(shù)組,objStudentTable.PrimaryKey = new DataColumnobjStudentTable.Columns“StudentNo“;,設(shè)置單個(gè)列為 DataTable 的主鍵,objStudentTable.PrimaryKey = new DataColumn objStudentTable.Columns“StudentNo“, objStudentTable.Columns“StudentName“ ;,為 DataTable 對(duì)象設(shè)置復(fù)合主鍵,DataTable 的約束,Constraint,是對(duì)表中數(shù)據(jù)施加的限制或規(guī)則集,決定表中可以存儲(chǔ)的數(shù)據(jù),用于維護(hù)數(shù)據(jù)的正確性和有效性,約束的類型,ForeignKeyConstraint,UniqueConstraint,DataView,DataView,用作 DataTable 中存儲(chǔ)的數(shù)據(jù)的表示層,提供對(duì) DataTable 進(jìn)行排序、篩選和搜索的自定義視圖,允許 WinForms 控件進(jìn)行數(shù)據(jù)綁定,可用于查看 DataTable 中存儲(chǔ)的數(shù)據(jù)的子集,數(shù)據(jù)綁定,是為了在控件上顯示數(shù)據(jù)庫(kù)表中存儲(chǔ)的數(shù)據(jù),而將應(yīng)用程序的控件與數(shù)據(jù)表的行進(jìn)行綁定的過(guò)程,DataView objStudentView = new DataView(objStudentTable); objStudentView.RowFilter = “StudentMarks 60“; for(int ctr =0; ctr objStudentView.Count; ctr+) MessageBox.Show(objStudentViewctr“StudentNo“.ToString(); ,創(chuàng)建 DataView 并對(duì)該視圖應(yīng)用某種篩選器,知識(shí)點(diǎn)小結(jié),使用DataSet的優(yōu)點(diǎn)及使用場(chǎng)合 DataSet的層次結(jié)構(gòu) 操縱DataSet中指定行中特定列的值 在程序中向DataSet中動(dòng)態(tài)添加表、字段、值、約束 利用DataView篩選數(shù)據(jù),DataAdapter 對(duì)象,數(shù)據(jù)源,填充,脫機(jī)數(shù)據(jù)庫(kù),非永久連接,DataAdapter 對(duì)象,.NET 提供程序及其 DataAdapter 類,DataAdapter 類的屬性和方法,OLEDBDataAdapter,用于訪問(wèn)任何由 OleDb 提供程序公開的數(shù)據(jù)源 用作數(shù)據(jù)集和數(shù)據(jù)源之間的橋梁,以便檢索和存儲(chǔ)數(shù)據(jù) 與 OleDbConnection 和 OleDbCommand 一起使用以提高性能,DataAdapter 類的屬性和方法,OleDbConnection objOleConnection = new OleDbConnection(); objOleConnection.ConnectionString = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source = “+ “D:Students.mdb“; objOleConnection.Open(); string query =“SELECT * from Student“; DataSet objDataSet = new DataSet(); OleDbDataAdapter objOleAdapter = new OleDbDataAdapter(); objOleAdapter.SelectCommand = new OleDbCommand(query,objOleConnection); objOleAdapter.Fill(objDataSet,“Students“);,傳遞給 OleDbAdapter 對(duì)象,將數(shù)據(jù)填充到數(shù)據(jù)集中,SQLDataAdapter,它設(shè)計(jì)為使用 Microsoft SQL Server 7 或更高版本提供最佳通信 該適配器在數(shù)據(jù)集和 Microsoft SQL Server 之間起橋梁作用,提供用于保存和檢索數(shù)據(jù)的接口 與 SqlConnection 和 SqlCommand 相互配合使用,SqlConnection objSqlConnection = new SqlConnection (“SERVER=MYSERVER;database=Students;uid=sa; password=playware“); SqlDataAdapter objSqlAdapter = new SqlDataAdapter(“SELECT * from Student“,objSqlConnection); objSqlConnection.Open(); DataSet objDataSet = new DataSet(); objSqlAdapter.Fill(objDataSet,“Students“);,創(chuàng)建與 SQL Server 數(shù)據(jù)庫(kù)的連接, 并用相應(yīng)的值填充數(shù)據(jù)集,知識(shí)點(diǎn)小結(jié),DataAdapter的作用 DataAdapter的組成 DataAdapter的屬性、方法 使用DataAdapter對(duì)數(shù)據(jù)的選擇、添加、刪除和修改,DataReader,DataReader,只讀 只進(jìn)記錄集,數(shù)據(jù)源,查詢,只讀和只進(jìn)訪問(wèn),需要永久連接,.NET 數(shù)據(jù)提供程序及其 DataReader 類,DataReader,DataReader 對(duì)象的屬性和方法,SqlConnection objSqlConnection = new SqlConnection(“SERVER=MYSERVER;database=Students; uid=sa;password=playware“); string query = “SELECT * from Student“; SqlCommand objSqlCommand = new SqlCommand(query,objSqlConnection); objSqlConnection.Open(); SqlDataReader objSqlReader = objSqlCommand.ExecuteReader(); while(objSqlReader.Read() MessageBox.Show(“學(xué)號(hào): “+objSqlReader.GetValue(0); ,執(zhí)行給定查詢、從數(shù)據(jù)流中檢索行,并將結(jié)果集綁定到 DataReader 類的給定實(shí)例中,用于查詢和檢索數(shù)據(jù)的示例,演示: 創(chuàng)建 Windows 應(yīng)用程序示例的步驟,“乘客詳細(xì)信息”窗體,創(chuàng)建一個(gè)名為“Example 1”的 Windows 應(yīng)用程序 將 Form1.cs 更改為 frmPassenger.cs 設(shè)計(jì)窗體,如圖 2.3 所示 命名控件 將以下命名空間包含在項(xiàng)目中 在類聲明部分聲明以下變量,using System.Data; using System.Data.SqlClient;,private SqlConnection objSqlConnection; private SqlDataAdapter objDataAdapter;,用于查詢和檢索數(shù)據(jù)的示例,將以下代碼添加到 frmPassenger 的 Load 事件中。 在 btnAdd 按鈕的 Click 事件中添加以下代碼。,private void frmPassenger_Load(object sender, System.EventArgs e) this.cboSex.Items.Add(“男“); this.cboSex.Items.Add(“女“); objSqlConnection = new SqlConnection(“server=MYSERVER;database=Flights; uid=sa; pwd = playware;“); ,向組合框中添加值,創(chuàng)建 Sql 連接,private void btnAdd_Click(object sender, System.EventArgs e) try objSqlConnection.Open(); DataSet objDataSet = new DataSet(); objDataAdapter = new SqlDataAdapter(“Select * from Passenger“,objSqlConnection); objDataAdapter.Fill(objDataSet,“Passenger“); objDataAdapter.InsertCommand = objSqlConnection.CreateCommand();,打開 Sql 連接,新建數(shù)據(jù)集,填充數(shù)據(jù)集,objDataAdapter.InsertCommand.CommandText = “INSERT INTO Passenger(FlightCode,PassportNo”+ ”,Name,SeatNo, Sex,Age) “ + “VALUES(“+this.txtFlightCode.Text+“,“ +this.txtPassport.Text+“,“ +this.txtName.Text+“,“ +this.txtSeatNo.Text+“,“ +this.cboSex.SelectedItem.ToString()+“,“ +this.txtAge.Text+“)“; DataTable objDataTable = new DataTable(); objDataSet.Tables.Add(objDataTable); DataRow objDataRow = objDataSet.Tables0.NewRow();,創(chuàng)建顯式、可重用的 INSERT 命令,objDataRow“FlightCode“=this.txtFlightCode.Text; objDataRow“PassportNo“=this.txtPassport.Text; objDataRow“Name“=this.txtName.Text; objDataRow“SeatNo“=Convert.ToInt32(this.txtSeatNo.Text); objDataRow“Sex“=this.cboSex.SelectedText; objDataRow“Age“=Convert.ToInt32(this.txtAge.Text); objDataSet.Tables0.Rows.Add(objDataRow); / objDataAdapter.Update(objDataSet,“Passenger“); Application.DoEvents(); MessageBox.Show(“已插入行“); this.ClearFields(); catch(SqlException ex) . . . ,用于查詢和檢索數(shù)據(jù)的示例,在 btnDelete 按鈕的 Click 事件中添加下列代碼。,private void btnDelete_Click(object sender, System.EventArgs e) try objSqlConnection.Open(); DataSet objDataSet = new DataSet(); objDataAdapter = new SqlDataAdapter(“Select * from Passenger“,objSqlConnection); objDataAdapter.Fill(objDataSet,“Passenger“); objDataAdapter.DeleteCommand = objSqlConnection.CreateCommand(); objDataAdapter.DeleteCommand.CommandText = “DELETE from Passenger where FlightCode=“+ this.txtFlightCode.Text+“; DataTable objDataTable = new DataTable(); objDataSet.Tables.Add(objDataTable);,打開連接,創(chuàng)建顯式、可重用的 DELETE 命令。,foreach(DataRow dr in objDataSet.Tables0.Rows) if(dr“FlightCode“.Equals(this.txtFlightCode.Text) DataRow objDataRow = dr; this.txtFlightCode.Text = objDataRow“FlightCode“.ToString(); this.txtPassport.Text = objDataRow“PassportNo“.ToString(); this.txtName.Text = objDataRow“Name“.ToString(); this.txtSeatNo.Text = objDataRow“SeatNo“.ToString(); this.cboSex.SelectedTe

溫馨提示

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

評(píng)論

0/150

提交評(píng)論