版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、1、概述2、連接字符串的寫法3、SqlConnection對象4、SqlCommand對象5、SqlDataReader對象6、DataSet對象7、釋放資源1、概述提供了豐富的數(shù)據(jù)庫操作,這些操作可以分為三個步驟:第一,使用SqlConnection對象連接數(shù)據(jù)庫;第二,建立SqlCommand對象,負責SQL語句的執(zhí)行和存儲過程的調(diào)用;第三,對SQL或存儲過程執(zhí)行后返回的“結果”進行操作。對返回“結果”的操作可以分為兩類:一是用SqlDataReader直接一行一行的讀取數(shù)據(jù)集;二是DataSet聯(lián)合SqlDataAdapter來操作數(shù)據(jù)庫。兩者比較:SqlDataReader時刻與遠程數(shù)
2、據(jù)庫服務器保持連接,將遠程的數(shù)據(jù)通過“流”的形式單向傳輸給客戶端,它是“只讀”的。由于是直接訪問數(shù)據(jù)庫,所以效率較高,但使用起來不方便。DataSet一次性從數(shù)據(jù)源獲取數(shù)據(jù)到本地,并在本地建立一個微型數(shù)據(jù)庫(包含表、行、列、規(guī)則、表之間的關系等),期間可以斷開與服務器的連接,使用SqlDataAdapter對象操作“本地微型數(shù)據(jù)庫”,結束后通過SqlDataAdapter一次性更新到遠程數(shù)據(jù)庫服務器。這種方式使用起來更方,便簡單。但性能較第一種稍微差一點。(在一般的情況下兩者的性能可以忽略不計。)一張十分出名的ADO.NET結構圖:2、連接字符串的寫法string connectString
3、= Data Source=.;Initial Catalog=Student;Integrated Security=True;3、SqlConnection對象命名空間:System.Data.SqlClient.SqlConnection;返回數(shù)據(jù)庫連接對象,參數(shù)字符串。實例化“連接對象”,并打開連接SqlConnection sqlCnt = new SqlConnection(connectString);sqlCnt.Open();使用完成后,需要關閉“連接對象”sqlCnt.Close();4、SqlCommand對象命名空間:System.Data.SqlClient.SqlC
4、ommand;SqlCommand對象用于執(zhí)行數(shù)據(jù)庫操作,操作方式有三種:SQL語句:command.CommandType = CommandType.Text;存儲過程:command.CommandType = CommandType.StoredProcedure;整張表:command.CommandType = CommandType.TableDirect;實例化一個SqlCommand對象SqlCommand command = new SqlCommand();command.Connection = sqlCnt; / 綁定SqlConnection對象或直接從SqlCon
5、nection創(chuàng)建SqlCommand command = sqlCnt.CreateCommand(); 常用方法:command.ExecuteNonQuery(): 返回受影響函數(shù),如增、刪、改操作;command.ExecuteScalar():執(zhí)行查詢,返回首行首列的結果;command.ExecuteReader():返回一個數(shù)據(jù)流(SqlDataReader對象)。常用操作 執(zhí)行SQLSqlCommand cmd = conn.CreateCommand(); /創(chuàng)建SqlCommand對象cmd.CommandType = CommandType.Text;cmd.Comman
6、dText = select * from products = ID; /sql語句cmd.Parameters.Add(ID, SqlDbType.Int);cmd.ParametersID.Value = 1; /給參數(shù)sql語句的參數(shù)賦值 調(diào)用存儲過程SqlCommand cmd = conn.CreateCommand(); cmd.CommandType = System.Data.CommandType.StoredProcedure;cmd.CommandText = 存儲過程名; 整張表SqlCommand cmd = conn.CreateCommand(); cmd.Co
7、mmandType = System.Data.CommandType.TableDirect;cmd.CommandText = 表名5、SqlDataReader對象命名空間:System.Data.SqlClient.SqlDataReader;SqlDataReader對象提供只讀單向數(shù)據(jù)的功能,單向:只能依次讀取下一條數(shù)據(jù);只讀:DataReader中的數(shù)據(jù)是只讀的,不能修改;相對地DataSet中的數(shù)據(jù)可以任意讀取和修改.它有一個很重要的方法,是Read(),返回值是個布爾值,作用是前進到下一條數(shù)據(jù),一條條的返回數(shù)據(jù),當布爾值為真時執(zhí)行,為假時跳出。如SqlCommand comm
8、and = new SqlCommand();command.Connection = sqlCnt;command.CommandType = CommandType.Text;command.CommandText = Select * from Users;SqlDataReader reader = command.ExecuteReader();/執(zhí)行SQL,返回一個“流”while (reader.Read() Console.Write(readerusername);/ 打印出每個用戶的用戶名6、DataSet對象6.1 SqlDataAdapter;命名空間:System.D
9、ata.SqlClient.SqlDataAdapter;SqlDataAdapter是SqlCommand和DataSet之間的橋梁,實例化SqlDataAdapter對象:SqlConnection sqlCnt = new SqlConnection(connectString);sqlCnt.Open();/ 創(chuàng)建SqlCommandSqlCommand mySqlCommand = new SqlCommand();mySqlCommand.CommandType = CommandType.Text;mySqlCommand.CommandText = select * from
10、product;mySqlCommand.Connection = sqlCnt;/ 創(chuàng)建SqlDataAdapterSqlDataAdapter myDataAdapter = new SqlDataAdapter();myDataAdapter.SelectCommand = mySqlCommand;/ 為SqlDataAdapter對象綁定所要執(zhí)行的SqlCommand對象上述SQL可以簡化為SqlConnection sqlCnt = new SqlConnection(connectString);sqlCnt.Open();/ 隱藏了SqlCommand對象的定義,同時隱藏了Sq
11、lCommand對象與SqlDataAdapter對象的綁定SqlDataAdapter myDataAdapter = new SqlDataAdapter(select * from product, sqlCnt);屬性和方法myDataAdapter.SelectCommand屬性:SqlCommand變量,封裝Select語句;myDataAdapter.InsertCommand屬性:SqlCommand變量,封裝Insert語句;myDataAdapter.UpdateCommand屬性:SqlCommand變量,封裝Update語句;myDataAdapter.DeleteCo
12、mmand屬性:SqlCommand變量,封裝Delete語句。myDataAdapter.fill():將執(zhí)行結果填充到Dataset中,會隱藏打開SqlConnection并執(zhí)行SQL等操作。6.2 SqlCommandBuilder;命名空間:System.Data.SqlClient.SqlCommandBuilder。對DataSet的操作(更改、增加、刪除)僅是在本地修改,若要提交到“數(shù)據(jù)庫”中則需要SqlCommandBuilder對象。用于在客戶端編輯完數(shù)據(jù)后,整體一次更新數(shù)據(jù)。具體用法如下:SqlCommandBuilder mySqlCommandBuilder = new
13、 SqlCommandBuilder(myDataAdapter); / 為myDataAdapter賦予SqlCommandBuilder功能myDataAdapter.Update(myDataSet, 表名); / 向數(shù)據(jù)庫提交更改后的DataSet,第二個參數(shù)為DataSet中的存儲表名,并非數(shù)據(jù)庫中真實的表名(二者在多數(shù)情況下一致)。6.3 DataSet命名空間:System.Data.DataSet。數(shù)據(jù)集,本地微型數(shù)據(jù)庫,可以存儲多張表。使用DataSet第一步就是將SqlDataAdapter返回的數(shù)據(jù)集(表)填充到Dataset對象中:SqlDataAdapter myDa
14、taAdapter = new SqlDataAdapter(select * from product, sqlCnt);DataSet myDataSet = new DataSet();/ 創(chuàng)建DataSetmyDataAdapter.Fill(myDataSet, product);/ 將返回的數(shù)據(jù)集作為“表”填入DataSet中,表名可以與數(shù)據(jù)庫真實的表名不同,并不影響后續(xù)的增、刪、改等操作 訪問DataSet中的數(shù)據(jù)SqlDataAdapter myDataAdapter = new SqlDataAdapter(select * from product, sqlCnt);Dat
15、aSet myDataSet = new DataSet();myDataAdapter.Fill(myDataSet, product);DataTable myTable = myDataSet.Tablesproduct;foreach (DataRow myRow in myTable.Rows) foreach (DataColumn myColumn in myTable.Columns) Console.WriteLine(myRowmyColumn);/遍歷表中的每個單元格 修改DataSet中的數(shù)據(jù)SqlDataAdapter myDataAdapter = new SqlD
16、ataAdapter(select * from product, sqlCnt);DataSet myDataSet = new DataSet();myDataAdapter.Fill(myDataSet, product);/ 修改DataSetDataTable myTable = myDataSet.Tablesproduct;foreach (DataRow myRow in myTable.Rows) myRowname = myRowname + 商品;/ 將DataSet的修改提交至“數(shù)據(jù)庫”SqlCommandBuilder mySqlCommandBuilder = ne
17、w SqlCommandBuilder(myDataAdapter);myDataAdapter.Update(myDataSet, product);注意:在修改、刪除等操作中表product必須定義主鍵,select的字段中也必須包含主鍵,否則會提示“對于不返回任何鍵列信息的 SelectCommand,不支持 UpdateCommand 的動態(tài) SQL 生成?!卞e誤 增加一行SqlDataAdapter myDataAdapter = new SqlDataAdapter(select * from product, sqlCnt);DataSet myDataSet = new Dat
18、aSet();myDataAdapter.Fill(myDataSet, product);DataTable myTable = myDataSet.Tablesproduct;/ 添加一行DataRow myRow = myTable.NewRow();myRowname = 捷安特;myRowprice = 13.2;/myRowid = 100; id若為“自動增長”,此處可以不設置,即便設置也無效myTable.Rows.Add(myRow);/ 將DataSet的修改提交至“數(shù)據(jù)庫”SqlCommandBuilder mySqlCommandBuilder = new SqlCom
19、mandBuilder(myDataAdapter);myDataAdapter.Update(myDataSet, product); 刪除一行SqlDataAdapter myDataAdapter = new SqlDataAdapter(select * from product, sqlCnt);DataSet myDataSet = new DataSet();myDataAdapter.Fill(myDataSet, product);/ 刪除第一行DataTable myTable = myDataSet.Tablesproduct;myTable.Rows0.Delete();SqlCommandBuilder mySqlCommandBuilder = new Sql
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025個人住房按揭貸款合同范本
- 2025貨品售賣合同協(xié)議
- 2025年度新能源實驗室氫能技術研究與應用合同3篇
- 2025年度水泥行業(yè)節(jié)能減排合作協(xié)議3篇
- 2025年度數(shù)據(jù)中心基礎設施安裝合同安裝協(xié)議3篇
- 2025年度養(yǎng)生館特色療法加盟合同協(xié)議書3篇
- 二零二五年度農(nóng)村房屋拆除安全協(xié)議及歷史建筑保護責任書
- 二零二五年度生態(tài)農(nóng)業(yè)配套農(nóng)村房屋買賣合作框架協(xié)議3篇
- 2025年度環(huán)保建筑材料合作成立公司合同3篇
- 2025年度建筑材料供貨與古建筑修復合同3篇
- 西安交通大學《計算物理與程序設計》2022-2023學年第一學期期末試卷
- 《寒假安全教育》課件
- 民營企業(yè)融資問題及其對策分析-以美的集團為例【數(shù)據(jù)論文】11000字
- DB32T 3390-2018 一體化智能泵站應用技術規(guī)范
- 中醫(yī)特色治療進修匯報
- 2023-2024學年廣東省廣州市白云區(qū)九年級(上)期末語文試卷
- 肛腸科一病一品匯報
- 第9課 作息有規(guī)律(說課稿)-2024-2025學年一年級上冊道德與法治(統(tǒng)編版)
- 2024年國家公務員考試《申論》真題(地市級)及答案解析
- 【初中生物】嘗試對生物進行分類-2024-2025學年七年級生物上冊同步教學課件(人教版2024)
- 機械年終考核述職報告
評論
0/150
提交評論