版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、中國科學(xué)技術(shù)大學(xué)網(wǎng)絡(luò)學(xué)院中國科學(xué)技術(shù)大學(xué)網(wǎng)絡(luò)學(xué)院數(shù)據(jù)庫編程數(shù)據(jù)庫編程-連接數(shù)據(jù)庫連接數(shù)據(jù)庫第六章第六章2本章目標(biāo)本章目標(biāo)了解了解ADO.NET 結(jié)構(gòu)結(jié)構(gòu)了解了解ADO.NET 的組件的組件使用使用Command 對象和對象和 Connection 對象對象使用使用ADO.NET 進(jìn)行事務(wù)處理進(jìn)行事務(wù)處理3ADO.NET 簡介簡介 2-1中央數(shù)據(jù)庫中央數(shù)據(jù)庫用戶需要時,可以隨時訪問數(shù)據(jù)用戶計算機(jī)向數(shù)據(jù)庫服務(wù)器發(fā)送請求客戶端不同的訪問方法和技術(shù)4ADO.NET 簡介簡介 2-2.NET FrameworkSystem.Data 命名空間以 ActiveX 數(shù)據(jù)對象 (ADO) 為基礎(chǔ)以 XML(擴(kuò)
2、展標(biāo)記語言)為格式傳送和接收數(shù)據(jù)5ADO.NET 的優(yōu)點的優(yōu)點互操作性互操作性性能性能可伸縮性可伸縮性標(biāo)準(zhǔn)化標(biāo)準(zhǔn)化可編程能力可編程能力6ADO.NET 對數(shù)據(jù)庫的訪問對數(shù)據(jù)庫的訪問(3-1)將數(shù)據(jù)傳遞到用戶界面時, ADO.NET 采用 XML 格式數(shù)據(jù)已緩存7ADO.NET 對數(shù)據(jù)庫的訪問對數(shù)據(jù)庫的訪問(3-2)對于Insert,Update,Delete 等單向操作 1、用Connection.Open打開數(shù)據(jù)庫2、用DataAdaptor.Command或者 Command.Execute 執(zhí)行命令3、關(guān)閉數(shù)據(jù)庫Insert用InsertCommandDelete 用DeleteComm
3、andUpdate用UpdateCommand8ADO.NET 對數(shù)據(jù)庫的訪問對數(shù)據(jù)庫的訪問(3-3) 關(guān)閉數(shù)據(jù)庫1、用Connection .Open建立連接2、用DataAdaptor.SelectCommand 執(zhí)行命令DataAdaptor.Fill對于對于Select的雙向操作的雙向操作 DataSet9.NET 數(shù)據(jù)提供程序數(shù)據(jù)提供程序 5-1ConnectionCommandDataReaderDataAdapterADO.NETDataSet.NET Framework 數(shù)據(jù)提供程序數(shù)據(jù)提供程序 1、SQLClient2、OLEDB3、Oracle4、ODBC由以下各項組成的集
4、合:10.NET 數(shù)據(jù)提供程序數(shù)據(jù)提供程序 5-2 客戶端服務(wù)器數(shù)據(jù)集2、將數(shù)據(jù)發(fā)送到數(shù)據(jù)集將數(shù)據(jù)發(fā)送到數(shù)據(jù)集A、客戶端修改數(shù)據(jù)集客戶端修改數(shù)據(jù)集3、數(shù)據(jù)集傳遞給客戶端數(shù)據(jù)集傳遞給客戶端B、將修改后的數(shù)據(jù)將修改后的數(shù)據(jù)集傳遞給服務(wù)器集傳遞給服務(wù)器1、客戶端從服務(wù)器請求數(shù)據(jù)客戶端從服務(wù)器請求數(shù)據(jù)1,2,3是從服務(wù)器檢索數(shù)據(jù)的過程A、B是對數(shù)據(jù)庫修改的過程11.NET 數(shù)據(jù)提供程序數(shù)據(jù)提供程序 5-3用于用于 SQL Server 的的 .NET Framework 數(shù)據(jù)提供程序數(shù)據(jù)提供程序System.Data.SqlClient 命名空間僅限于連接 SQL Server 數(shù)據(jù)庫 7.0 或更高
5、版本12.NET 數(shù)據(jù)提供程序數(shù)據(jù)提供程序 5-4用于用于 OLEDB 的的 .NET Framework 數(shù)據(jù)提供程序數(shù)據(jù)提供程序13.NET 數(shù)據(jù)提供程序數(shù)據(jù)提供程序 5-5用于用于 ODBC 的的 .NET Framework 數(shù)據(jù)提供程序的命名空間數(shù)據(jù)提供程序的命名空間用于用于 Oracle 的的 .NET Framework 數(shù)據(jù)提供程序的命名空間數(shù)據(jù)提供程序的命名空間System.Data.Odbc 命名空間System.Data.OracleClient 命名空間14知識點小結(jié)知識點小結(jié)使用的名稱空間使用的名稱空間SQL Serverusing System.Data.SqlCl
6、ient OLE DB using System.Data.OleDb Oracle using System.Data.OracleClientODBCusing System.Data.Odbc15為什么使用為什么使用 Connection應(yīng)用程序應(yīng)用程序請求數(shù)據(jù)請求數(shù)據(jù)Connection橋梁橋梁16示例示例1 代碼分析代碼分析關(guān)鍵代碼回顧關(guān)鍵代碼回顧/ 數(shù)據(jù)庫連接字符串?dāng)?shù)據(jù)庫連接字符串string connString = Data Source= . ;Initial Catalog=MySchool;User ID=sa;/ 創(chuàng)建創(chuàng)建 Connection 對象對象SqlConne
7、ction connection = new SqlConnection(connString); / 打開數(shù)據(jù)庫連接打開數(shù)據(jù)庫連接connection.Open();MessageBox.Show(打開數(shù)據(jù)庫連接成功打開數(shù)據(jù)庫連接成功); / 關(guān)閉數(shù)據(jù)庫連接關(guān)閉數(shù)據(jù)庫連接connection.Close();MessageBox.Show(關(guān)閉數(shù)據(jù)庫連接成功關(guān)閉數(shù)據(jù)庫連接成功);表示本機(jī)表示本機(jī)17Connection 主要成員主要成員必須顯式關(guān)閉連接必須顯式關(guān)閉連接屬性屬性說明說明ConnectionString 連接字符串連接字符串方法方法說明說明Open打開數(shù)據(jù)庫連接打開數(shù)據(jù)庫連接Cl
8、ose關(guān)閉數(shù)據(jù)庫連接關(guān)閉數(shù)據(jù)庫連接18連接數(shù)據(jù)庫步驟連接數(shù)據(jù)庫步驟連接數(shù)據(jù)庫的步驟:連接數(shù)據(jù)庫的步驟:1、定義連接字符串、定義連接字符串2、創(chuàng)建、創(chuàng)建 Connection 對象對象3、打開與數(shù)據(jù)庫的連接、打開與數(shù)據(jù)庫的連接Data Source=服務(wù)器名服務(wù)器名;Initial Catalog=數(shù)據(jù)庫名數(shù)據(jù)庫名; User ID=用戶名用戶名;Pwd=密碼密碼SqlConnection connection = new SqlConnection(connString);連接字符串連接字符串connection.Open( );沒有密碼,可省略沒有密碼,可省略19Connection 對象對
9、象命名空間命名空間對應(yīng)的對應(yīng)的 Connection 對象對象System.Data.SqlClient SqlConnectionSystem.Data.OleDbOleDbConnectionSystem.Data.Odbc OdbcConnectionSystem.Data.OracleClientOracleConnection不同命名空間的不同命名空間的 Connection 對象對象20小結(jié)小結(jié)連接到本機(jī)的連接到本機(jī)的 pubs 數(shù)據(jù)庫數(shù)據(jù)庫/ 連接字符串連接字符串string connString = Data Source=.;Initial Catalog=pubs;User
10、 ID=sa;/ 創(chuàng)建創(chuàng)建Connection 對象對象 SqlConnection connection = new SqlConnection(connString);connection.Open( ); / 打開數(shù)據(jù)庫連接打開數(shù)據(jù)庫連接connection.Close( ); / 關(guān)閉數(shù)據(jù)庫連接關(guān)閉數(shù)據(jù)庫連接關(guān)鍵代碼關(guān)鍵代碼21為什么使用為什么使用 Command應(yīng)用程序應(yīng)用程序打開數(shù)據(jù)庫打開數(shù)據(jù)庫處理數(shù)據(jù)處理數(shù)據(jù)Connection怎樣處理數(shù)據(jù)怎樣處理數(shù)據(jù)執(zhí)行命令并從數(shù)據(jù)源中返回結(jié)果執(zhí)行命令并從數(shù)據(jù)源中返回結(jié)果 22Command 的主要成員的主要成員屬性屬性說明說明Connecti
11、on Command對象使用的數(shù)據(jù)庫連接對象使用的數(shù)據(jù)庫連接CommandText執(zhí)行的執(zhí)行的SQL語句語句方法方法說明說明 ExecuteNonQuery執(zhí)行不返回行的語句,如執(zhí)行不返回行的語句,如UPDATE等等ExecuteReader返回返回DataReader對象對象ExecuteScalar返回單個值,如執(zhí)行返回單個值,如執(zhí)行COUNT(*)23使用使用 Command 步驟步驟使用使用Command步驟:步驟:1、創(chuàng)建數(shù)據(jù)庫連接、創(chuàng)建數(shù)據(jù)庫連接2、定義、定義 SQL 語句語句3、創(chuàng)建、創(chuàng)建 Command 對象對象4、執(zhí)行命令、執(zhí)行命令SqlConnection connecti
12、on = new SqlConnection(connString);string sql = SELECT COUNT(*) FROM Student;connection.Open();/ 打開數(shù)據(jù)庫連接打開數(shù)據(jù)庫連接SqlCommand command = new SqlCommand(sql, connection);int num = (int)command.ExecuteScalar();執(zhí)行命令前,必須打開數(shù)據(jù)庫連接!執(zhí)行命令前,必須打開數(shù)據(jù)庫連接!要進(jìn)行類型轉(zhuǎn)換!要進(jìn)行類型轉(zhuǎn)換!24Command 對象對象用用SQL 語句的語句的Command設(shè)置設(shè)置SqlCommand C
13、omm=new SqlCommand();Comm.CommandText=SQL 語句語句;Comm.CommandType=CommandType.Text ;Comm. Connection=sqlConn;用存儲過程的用存儲過程的Command設(shè)置設(shè)置SqlCommand Comm=new SqlCommand();Comm.CommandText=sp_UpdateName;Comm.CommandType=CommandType. StoredProcedure ;Comm. Connection=sqlConn;其中,其中,Sp_UpdateName是在是在SQL Server服
14、務(wù)器上創(chuàng)建的存儲過程服務(wù)器上創(chuàng)建的存儲過程25綜合示例綜合示例完成系統(tǒng)登錄功能完成系統(tǒng)登錄功能1、驗證管理員的用戶名和密碼是否存在、驗證管理員的用戶名和密碼是否存在2、驗證通過,顯示管理員主窗體、驗證通過,顯示管理員主窗體處理登錄按鈕的處理登錄按鈕的 Click 事件事件定義一個定義一個 ValidateUser() 方法方法需要需要 Connection 和和 Command 對象對象分兩步實現(xiàn)驗證分兩步實現(xiàn)驗證:1、建立數(shù)據(jù)庫連接、建立數(shù)據(jù)庫連接2、驗證用戶是否存在、驗證用戶是否存在 26用戶驗證方法框架用戶驗證方法框架ValidateUser() 方法框架方法框架1、驗證的結(jié)果:通過,不
15、通過、驗證的結(jié)果:通過,不通過返回值為返回值為 bool 型型2、方法需要:、方法需要: 用戶名,密碼,登錄類型用戶名,密碼,登錄類型值方式傳參值方式傳參3、不通過的原因:、不通過的原因: 用戶名或密碼不存在、其他原因用戶名或密碼不存在、其他原因引用方式傳參引用方式傳參public bool ValidateUser(string loginType, string loginId, string loginPwd, ref string message) 27用戶驗證方法具體實現(xiàn)用戶驗證方法具體實現(xiàn)第一步:建立數(shù)據(jù)庫連接第一步:建立數(shù)據(jù)庫連接增加增加 DBHelper 類類第二步:查詢用戶是
16、否存在第二步:查詢用戶是否存在SELECT COUNT(*)ExecuteScalar() 方法查詢方法查詢ValidateUser() 方法具體實現(xiàn)方法具體實現(xiàn)28小結(jié)小結(jié)/ 查詢查詢 Student 表使用的表使用的 SQL 語句語句string sql = string.Format( SELECT COUNT(*) FROM Student WHERE LogInId=0 AND LogInPwd=1,txtLogInId, txtLogInPwd);/ 使用的使用的 Command 對象對象SqlCommand command = new SqlCommand(sql, DBHelp
17、er.connection);DBHelper.connection.Open();/ 執(zhí)行查詢,返回找到的個數(shù)執(zhí)行查詢,返回找到的個數(shù)count = (int)command.ExecuteScalar();增加驗證用戶的代碼增加驗證用戶的代碼29總結(jié)總結(jié)Connection 對象的什么方法用來打開和關(guān)閉數(shù)據(jù)庫連接?對象的什么方法用來打開和關(guān)閉數(shù)據(jù)庫連接?ExecuteScalar()方法返回什么?方法返回什么?30知識點小結(jié)知識點小結(jié)Connection對象的作用對象的作用Connection對象的兩種使用方法對象的兩種使用方法拖拉控件拖拉控件寫代碼寫代碼四種典型的連接方式的應(yīng)用名稱空間和
18、連接字符串的寫法四種典型的連接方式的應(yīng)用名稱空間和連接字符串的寫法SqlConnectionOleDbConnectionOracleConnectionOdbcConnection31.NET 中的事務(wù)處理中的事務(wù)處理 3-1帳單帳單編編號號 說明說明數(shù)量數(shù)量價格價格總計總計1肥皂肥皂520 100編號:編號:12439日期:日期: 2004年年10月月30日日肥皂肥皂關(guān)系表關(guān)系表數(shù)據(jù)庫512439124392004 年年 10 月月 30 日日已成功地完成對一個表的操作,但是關(guān)系表尚未更新,因此,數(shù)據(jù)會出現(xiàn)不一致的現(xiàn)象成功地進(jìn)行整個操作或者取消整個操作 確保事務(wù)處理是一組數(shù)據(jù)操作,這些操作
19、要么必須全部成功,要么必須全部失敗,以保證數(shù)據(jù)的一致性和完整性32.NET 中的事務(wù)處理中的事務(wù)處理 3-2lBegin: 在執(zhí)行事務(wù)處理中的任何操作之前,必須使用 Begin 命令來開始事務(wù)處理lCommit: 在成功將所有修改都存儲于數(shù)據(jù)庫時,才算是提交了事務(wù)處理lRollback: 由于在事務(wù)處理期間某個操作失敗,而取消事務(wù)處理已做的所有修改,這時將發(fā)生回滾事務(wù)處理命令事務(wù)處理命令33.NET 中的事務(wù)處理中的事務(wù)處理 3-3類說明OdbcTransaction表示對數(shù)據(jù)源進(jìn)行的表示對數(shù)據(jù)源進(jìn)行的 SQL 事務(wù)處理事務(wù)處理OleDbTransaction表示對數(shù)據(jù)源進(jìn)行的表示對數(shù)據(jù)源進(jìn)行
20、的 SQL 事務(wù)處理事務(wù)處理OracleTransaction表示對數(shù)據(jù)庫進(jìn)行的事務(wù)處理表示對數(shù)據(jù)庫進(jìn)行的事務(wù)處理SqlTransaction表示要對表示要對 SQL Server 數(shù)據(jù)庫進(jìn)行的數(shù)據(jù)庫進(jìn)行的 Transact-SQL 事務(wù)處理事務(wù)處理34SqlTransaction 類類 3-1方法方法屬性屬性Save( )Rollback( )Commit( )ConnectionSqlTransaction 類表示要對數(shù)據(jù)源進(jìn)行的事務(wù)處理35SqlTransaction 類類 3-2在 ADO.NET 中實現(xiàn)事務(wù)處理時執(zhí)行的步驟順序SqlConnection sqlConn = new S
21、qlConnection(server=SQLDB; uid=sa; pwd=sa; database=pubs);sqlConn.Open();創(chuàng)建數(shù)據(jù)庫連接并打開該連接SqlTransaction sqlTrans = sqlConn.BeginTransaction();使用 BeginTransaction() 方法開始事務(wù)處理36SqlTransaction 類類 3-3Comm.Transaction = sqlTrans; 將 Command 對象的 Transaction 屬性設(shè)置為事務(wù)處理對象 insertCommand = Insert into Student (Id,
22、Name)values (200494012, “WangLi);Comm.CommandText = insertCommand;Comm.ExecuteNonQuery ();執(zhí)行 SQL 命令sqlTrans.Commit();如果操作過程中沒有錯誤,則提交事務(wù)處理。如果操作過程中發(fā)生錯誤,則回滾已完成的所有修改sqlConn.Close(); 關(guān)閉連接37應(yīng)用程序示例應(yīng)用程序示例 7-1在 VS.NET 2005 中新建一個名為Example1 的基于 Windows 的項目。將默認(rèn)窗體命名為 frmFlight.cs用戶界面用戶界面38應(yīng)用程序示例應(yīng)用程序示例 7-2控件名稱屬性值F
23、ormfrmFlightText航班詳細(xì)信息航班詳細(xì)信息ButtonbutAddText添加添加(&A) butModifyText修改修改(&M)butDeleteText刪除刪除(&D)butCancelText取消取消(&C)LabellblFlightNoText航班號:航班號:lblAirlineText航空公司:航空公司:lblDestinationText終到站:終到站:lblSourceText始發(fā)站:始發(fā)站:lblDepartureText起飛:起飛:lblArrivalText到達(dá):到達(dá):ComboBoxcboSeatsText座位數(shù)量:座位數(shù)量:39應(yīng)用程序示例應(yīng)用程序示
24、例 7-3/ Connection 對象和 Command 對象private SqlConnection sqlConn;private SqlCommand sqlComm; / 類變量private string instrCmd;private string modCmd;private string delCmd;private void frmFlight_Load(object sender, System.EventArgs e) / 初始化 connection 對象 sqlConn = new SqlConnection (server = jeny; database =
25、 Flights; uid = sa; pwd = sa); / 將座位數(shù)量添加到組合框中 this.cboSeats.Items.Clear(); this.cboSeats.Items.Add(“200); this.cboSeats.Items.Add(“250); this.cboSeats.Items.Add(“300); this.btnModify.Enabled = false; this.btnDelete.Enabled = false;給組合框添加項并禁用按鈕初始化 connection 對象40應(yīng)用程序示例應(yīng)用程序示例 7-4private void btnAdd_Cl
26、ick(object sender, System.EventArgs e)/ 插入命令 instrCmd = insert into FlightDetails values (+this.txtFlightCode.Text+, +this.txtAirline.Text+,“ +this.txtDestination.Text+, “+this.txtSource.Text+,“ +this.txtArrival.Text+, +this.txtDeparture.Text+, “ +this.cboSeats.SelectedItem.ToString()+);/ 初始化 comman
27、d 對象 sqlComm = new SqlCommand(instrCmd, sqlConn);將插入命令和 connection 對象傳遞給 command 對象btnAdd Click 事件處理程序 41應(yīng)用程序示例應(yīng)用程序示例 7-5try / 打開連接 sqlConn.Open(); / 執(zhí)行插入語句 sqlComm.ExecuteNonQuery(); MessageBox.Show(“已成功添加記錄); / 啟用和禁用按鈕 this.btnModify.Enabled = true; this.btnDelete.Enabled = true; this.btnAdd.Enabl
28、ed = false; this.txtFlightCode.Enabled = false;catch(SqlException ex) MessageBox.Show(ex.Message);finally / 關(guān)閉連接sqlConn.Close();打開連接并執(zhí)行 sqlComm 中的命令btnAdd Click 事件處理程序 42應(yīng)用程序示例應(yīng)用程序示例 7-6private void btnModify_Click(object sender, System.EventArgs e)modCmd = update FlightDetails set Airline = “+this.
29、txtAirline.Text+, Destination = “+this.txtDestination.Text+,Source = +this.txtSource.Text+, Arrival = +this.txtArrival.Text+, Departure = +this.txtDeparture.Text+, TotalSeats = +this.cboSeats.SelectedItem.ToString()+ where FlightCode like +this.txtFlightCode.Text+;sqlComm = new SqlCommand(modCmd, sqlConn);trysqlConn.Open();sqlComm.ExecuteNonQuery();MessageBox.Show(“已成功更新記錄);catch(SqlException ex) MessageBox.Show(ex.Message);finally sqlConn.Close();設(shè)置更新命令btnModify Click
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 汽車租賃合同
- 對照六檢查個人自我剖析材料與反思總結(jié)三篇
- 房地產(chǎn)稅收優(yōu)惠政策解析培訓(xùn)課件:張強(qiáng)
- 2025年安徽省職教高考《語文》考前沖刺模擬試題庫(附答案)
- 2025年江西中醫(yī)藥高等??茖W(xué)校高職單招語文2018-2024歷年參考題庫頻考點含答案解析
- 2025年江蘇安全技術(shù)職業(yè)學(xué)院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 2025年武漢城市職業(yè)學(xué)院高職單招高職單招英語2016-2024歷年頻考點試題含答案解析
- 2025年新疆建設(shè)職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 專題08 走進(jìn)法治天地 帶解析
- 工程維修勞務(wù)分包合同
- 江西省部分學(xué)校2024-2025學(xué)年高三上學(xué)期1月期末英語試題(含解析無聽力音頻有聽力原文)
- GA/T 2145-2024法庭科學(xué)涉火案件物證檢驗實驗室建設(shè)技術(shù)規(guī)范
- 2024年度窯爐施工協(xié)議詳例細(xì)則版B版
- 尿毒癥替代治療
- 【課件】2025屆高考英語一輪復(fù)習(xí)小作文講解課件
- 基底節(jié)腦出血護(hù)理查房
- 工程公司總經(jīng)理年終總結(jié)
- 2024年海南省高考地理試卷(含答案)
- 【企業(yè)盈利能力探析的國內(nèi)外文獻(xiàn)綜述2400字】
- 三年級上冊數(shù)學(xué)口算題1000道帶答案
- 蘇教版(2024新版)一年級上冊科學(xué)全冊教案教學(xué)設(shè)計
評論
0/150
提交評論