亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

關于ADO.NET的一些知識整理

2019-11-14 15:44:18
字體:
來源:轉載
供稿:網友

ADO.NET是什么

雖然我們都知道ADO.NET是對數據庫的操作,但是要真的說出ADO.NET的具體含義還不是很容易。 
ADO.NET是ActiveX Data Objects的縮寫,它是一個COM組件庫,用于在microsoft技術中訪問數據。之所以叫ADO.NET,應該是微軟自己打的廣告,希望在NET編程環境中優先使用這種數據訪問接口。上面這段話基本來自百度百科。簡單來說,ADO.NET就是一種數據訪問接口,可以讓我們在程序中調用相應的類庫對數據庫(通常為SQL Server,也可以是access 等其他數據庫)進行增刪改查等操作。

ADO.NET的幾大組成部分

ADO.NET由五大類庫組成,分別是:

  1. Connection(用于建立與 數據庫的連接)
  2. Command(用于執行SQL語句)
  3. DataReader(用于讀取數據)
  4. DataAdapter(用于填充把數據填充到DataSet)
  5. DataSet(數據集,用于程序中)

通常,從程序中訪問數據庫的方法是:

  1. 創建一個到數據庫的連接
  2. 打開數據庫連接
  3. 創建ADO記錄集
  4. 從記錄集中提取需要的數據
  5. 關閉記錄集
  6. 關閉連接

下面就分別根據這一個過程結合ADO.NET的五大類庫進行解釋。

要想使用ADO.NET需要在程序中引用System.Data.SqlClient。其中包含了對Sql Server進行操作的數據訪問類:

  • SqlConnection:連接數據庫
  • SqlCommand:數據庫命名對象
  • SqlCommandBuilder:生成SQL命令
  • SqlDataReader:數據讀取器
  • SqlDataAdapter:數據適配器,用于填充DataSet
  • SqlParameter:為存儲過程定義參數
  • SqlTransaction:數據庫事務

建立連接

首先,要想訪問數據庫,我們需要一個媒介把程序與數據庫連接起來。這就是連接字符串,它的基本語法為:Data Source(數據源) + Initial Catalog(數據庫名稱) + User ID(用戶名) + PassWord(密碼)。 

String connectString = "Data Source = myServerAddress;Initial Catalog = myDataBase;User Id = myUserName; Password = myPassword;";

或者

String connectString = "Server =myServerAddress;Database = myDataBase; User Id = myUsername; Password = myPassword;";

 

注意:對于Sql Server來說,它支持兩種身份驗證方法,一種是windows身份驗證,另一種是Sql Server身份驗證。如果要用windows身份驗證,就需要在連接字符串中包括Integrated Security屬性。該屬性默認為False。需要設置為True后才能使用windows身份驗證。 
除了這幾個必須的字段,連接字符串中還有許多可選的屬性,在這里我就不一一列舉,列出一些相關資料供感興趣的朋友自行查閱,一個連接字符串可以包含哪些屬性(http://book.51cto.com/art/200812/99995.htm)。

接著,有了連接字符串就可以創建連接對象了。 

SqlConnection connection = new SqlConnection(connecString); 

或者可以使用專門的連接字符串生成器: 

SqlConnectionStringBuilder connectionStringBuilder = new SqlConnectionStringBuilder() { DataSource=”“, InitialCatalog=”“, UserID=”“, Password=”” }; SqlConnection connection = new SqlConnection(connectionStringBuilder.ToString());

 

然后使用連接對象可以打開或關閉連接。 
connection.Open(); 
connection.Close();

執行命令

打開連接之后就可以操作數據庫了,在這里需要用到SqlCommand命令對象。 
它具有四個主要屬性,這些屬性會在初始化的時候賦默認值: 
CommandText:空字符串(”“) 
CommandTimeout:30 
CommandType:CommandType.Text 
Connection:Null

創建命令對象: 
SqlCommand command = connection.CreateCommand(); 
或 
SqlCommand command = new SqlCommand();

SqlCommand包含了幾個重要的屬性: 
CommandText:用于獲取或設置藥對數據源之行的SQL語句、表明或存儲過程。 
CommandType:設置你執行的SQL語句類型,有三個枚舉,分別是Text(SQL文本命令),StoredPRocedure(存儲過程),TableDirect(表名)。 
Parameters:設置你的T-SQL中需要用到的參數。

幾個重要的方法: 
ExecuteNonQuery:返回被SQL語句執行影響的行數(int),主要執行增刪改操作。 
ExecuteReader:執行SQL或存儲過程,返回的是SqlDataReader類型,主要用來查詢。 
ExecuteScalar:返回執行結果集中的第一行第一列,如果沒有數據,則返回NULL。 
CreateParameter:創建SqlParameter實例。 
舉例說明:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;//必須using System.Data.SqlClient;//必須namespace Command{  class Program  {    static void Main(string[] args)    {       SqlConnectionStringBuilder conStr = new SqlConnectionStringBuilder();       conSt.DataSource=@"./SQLEXPRESS";       conStr.IntegratedSecurity=true;       conStr.InitialCatalog="db_Test";       StringBuilder strSQL = new StringBuilder();       for(int i=0;i<=100;i++)       {         strSQL.Append("insert into tb_Test");         strSQL.Append("values('");         string name = "test"+i.ToString();         strSQL.Append(name);       }       using(SqlConnection con = new SqlConnection(conStr.ConnectionString))       {         con.Open();         SqlCommand cmd = new SqlCommand(strSQL.ToString(),con);        int impactedNumber = cmd.ExecuteNonQuery();//返回受影響的行數        object firstData = cmd.ExecuteScalar();//返回執行結果中的第一行第一列,此方法可用于獲取插入數據的ID,(int lineNumber =(int)cmd.ExecuteScalar();)       }    }  }}

SQL參數

若想在程序中傳遞參數給數據庫,可以使用SqlParameter。該類有幾個重要的屬性:

  • ParameterName:設置參數名
  • Value:給參數設置值
  • Size:設置參數字節最大長度
  • SqlDbType:參數在SQL中的類別

    和幾個重要的方法:

  • AddWithVlue

  • Add
  • AddRange

    舉例說明:

 SqlConnection connection =new SqlConnection("")) {   SqlCommand cmd = connection.CreateCommand();   cmd.CommandText="";cmd.Parameters.Add("@name",SqlDbType.NVarChar).Value = "deng";//方法一cmd.Parameters.AddWithValue(@"name","deng");//方法二SqlParameter[] parameters = new SqlParameter[] {  new SqlParameter("@name",SqlDbType.NvarChar,100){Value="deng"}, }; cmd.Parameters.AddRange(parameters);//可以放一個參數數組,包含多條參數,在此只舉一個例子}

可以通過cmd.Parameters[i].Value設置和讀取數值。

數據讀取

利用查詢語句得到的數據信息需要通過數據讀取器進行操作。 
舉例:

SqlConnetion con = new SqlConnection(""){  con.Open();  SqlCommand cmd = con.CreateCommand();  cmd.CommandText="";  SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection)  {    While(dr.Read())    {     string str = dr.GetSqlString(0).ToString();    }  }}

介紹幾個常用的方法:

  1. GetOrdinal:可以獲取指定列名的序列號,int name = dr.GetOrdinal(“name”);
  2. GetName:與上面的方法對應,可以通過列號返回列名字。
  3. IsDBNull:判斷當前讀取的數據是否為Null。
  4. NextResult:當查詢為批處理查詢時,使用這個方法去獲取下一個結果集,返回值為Bool,如果存在多個結果集,則為true;否則為false。
  5. Read:讀取數據。

常用屬性有:

  1. HasRow:判斷是否有數據。
  2. FieldCount:獲取讀取的列數。
  3. IsClosed:判斷讀取的數據流是否關閉。

SqlDataReader是連接相關的,也就是說與數據庫的連接一斷開就無法讀取數據庫中的數據,說明查詢結果并不是放在程序中,而是放在數據庫的服務中。

事務

需要用到SqlTransaction類,需要在指定位置命名存儲點,該存儲點之后的操作都將會回滾。 
例子:

SqlConnection con = new SqlConnection(strCon);con.Open();SqlTransaction transaction = con.BeginTransaction();SqlCommand cmd = con.CreateCommand();cmd.CommandText = ""cmd.Transaction = transaction;transaction.Save("transaction point");transaction.Rollback("transaction point");

數據適配器

SqlDataAdapter類有四個重載構造函數:

  • 無參
  • SqlDataAdapter(SqlCommand)
  • SqlDataAdapter(String,SqlConnection)
  • SqlDataAdapter(String, ConnectionString)

填充數據例子:

DataSet dataSet = new DataSet();SqlConnection con = new SqlConnection("");con.Open();SqlCommand cmd = con.CreateCommand();cmd.CommandText="select xxx from tb_xxx";SqlDataAdapter dataAdapter = new SqlDataAdapter(cmd);dataAdapter.Fill(dataSet);

填充后的數據可以使用SqlCommandBuilder進行增刪改查。

例子:

SqlConnection con = new SqlConnection(ConnectionString();con.Open();SqlDataAdapter da = new SqlDataAdapter("select xxx from tb_xx");DataSet ds =new DataSet();da.Fill(ds);SqlCommandBuilder cmdBuilder = new SqlCommandBuilder(da);DataRow row = ds.Tables[0].NewRow();row[0]="a";row[1]="b";ds.Tables[0].Rows.Add(row);da.Update(ds);

SqlCommandBuilder 可以把DataSet增加的數據轉化為SQL語句用來更新數據庫。然后調用Update方法。

總結

因為現在使用的框架或著庫都已經封裝了ADO.NET,可能在日常工作中很少會再從頭開始編寫ADO.NET來連接數據庫,但是在.net面試中還是非常常見的,希望可以借此加深一下印象。另外,本人目前持有的是銀蕨簽證,可以在新西蘭求職9個月,期間如果找到相關專業工作,可直接轉2年的工作簽證,非常方便移民,該簽證每年全球發放300個,雖然還沒有working holiday簽證為大家所熟知,但是每年的爭搶還是很激烈的。需要了解相關事宜的可以給我留言。本人的第一篇博客,屬于整理資料,并非完全原創,如有哪方面不正確,還希望大神可以多多指正。

版權聲明:本文為博主原創文章,未經博主允許不得轉載。


上一篇:編碼好習慣

下一篇:C#學習第一天

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久999精品免费| 日韩中文综合网| 久久99国产精品久久久久久久久| 亚洲老头同性xxxxx| 日韩电影免费在线观看中文字幕| 夜夜躁日日躁狠狠久久88av| 日韩国产欧美精品一区二区三区| 国产精品一区电影| 欧美激情精品久久久久久蜜臀| 欧美最顶级丰满的aⅴ艳星| 77777少妇光屁股久久一区| 最新的欧美黄色| 中文字幕国产精品| 欧美另类69精品久久久久9999| 欧美中文字幕在线播放| 国产精品黄色av| 国产aaa精品| 欧美精品国产精品日韩精品| 国产亚洲激情视频在线| 国产成人精品日本亚洲| 欧美色道久久88综合亚洲精品| 亚洲免费av网址| 国产精品久久婷婷六月丁香| 亚洲精选一区二区| 亚洲综合中文字幕68页| 欧美午夜精品伦理| 亚洲一区二区三区乱码aⅴ蜜桃女| 色综合影院在线| 亚洲欧美国产精品| 久久人91精品久久久久久不卡| 国产精品情侣自拍| 日韩h在线观看| 亚洲日韩中文字幕| 91在线视频导航| 欧美另类极品videosbestfree| 国产在线拍偷自揄拍精品| 中文字幕亚洲第一| 亚洲一区二区三| 国产精品青青在线观看爽香蕉| 一个人看的www欧美| 性欧美xxxx视频在线观看| 日韩有码在线播放| 在线观看91久久久久久| 国产精品色午夜在线观看| 国产日韩欧美日韩大片| 97国产精品人人爽人人做| 中文字幕久精品免费视频| 亚洲激情久久久| 蜜臀久久99精品久久久久久宅男| 成人免费观看49www在线观看| 欧美日韩国产在线播放| 久久人人97超碰精品888| 久久精彩免费视频| 久久久在线观看| 欧美激情在线观看| 一区二区三区四区在线观看视频| 久久综合伊人77777蜜臀| 2018中文字幕一区二区三区| 国产免费成人av| 色偷偷888欧美精品久久久| 精品人伦一区二区三区蜜桃网站| 91av在线国产| 国产99在线|中文| 国产精品成人国产乱一区| 九九热99久久久国产盗摄| 色综合色综合网色综合| 国产成人午夜视频网址| 欧美精品18videos性欧| 久久亚洲一区二区三区四区五区高| 成人疯狂猛交xxx| 亚洲美女av电影| 欧美黑人巨大xxx极品| 久久中文字幕在线视频| 国产成人一区二区三区小说| 国产成人精品久久| 精品国产一区二区三区久久狼5月| 91精品国产综合久久久久久蜜臀| 欧美日韩精品在线| 亚洲大胆人体视频| 亚洲免费伊人电影在线观看av| 日本中文字幕成人| 欧美xxxx14xxxxx性爽| 欧美中文字幕在线播放| 2019中文字幕在线免费观看| 欧美性xxxx极品高清hd直播| 成人免费看黄网站| 黄色精品在线看| 欧美在线视频网| 亚洲最大福利视频| 中国日韩欧美久久久久久久久| 欧美裸体xxxx极品少妇| 色香阁99久久精品久久久| 黑人精品xxx一区一二区| 欧美日韩加勒比精品一区| 色与欲影视天天看综合网| 8x拔播拔播x8国产精品| 国产有码在线一区二区视频| 亚洲国产私拍精品国模在线观看| 日韩美女av在线免费观看| 亚洲人成在线免费观看| 久久久久久中文| 奇米影视亚洲狠狠色| 久久亚洲国产成人| 国产精品亚洲一区二区三区| 国产日韩av在线| 456亚洲影院| 91免费观看网站| 亚洲国产精品小视频| 亚洲性猛交xxxxwww| 日韩精品久久久久久福利| 伊人亚洲福利一区二区三区| 日韩美女视频中文字幕| 日本三级久久久| 亚洲综合日韩在线| 日本午夜精品理论片a级appf发布| 91视频免费在线| 欧美日韩国产第一页| 欧洲亚洲在线视频| 久久久免费观看| 欧美精品少妇videofree| 91热精品视频| 欧美日韩中文字幕在线| 久久精品电影网| 九九热视频这里只有精品| 国产精品久久久久久久久久小说| 国产一区深夜福利| 国产精品久久久久久亚洲调教| 国产精品国内视频| 久久久久久噜噜噜久久久精品| 亚洲欧美在线一区| 国产精品久久久久久久av电影| 日韩欧美有码在线| 日韩第一页在线| 国产亚洲精品高潮| 欧美性猛交丰臀xxxxx网站| 精品国产一区二区三区久久狼黑人| 欧洲日韩成人av| 国产精品都在这里| 综合激情国产一区| www.亚洲人.com| 欧美黑人xxx| 国产福利视频一区二区| 亚洲男人av在线| 精品二区三区线观看| 欧美日韩亚洲系列| 日本19禁啪啪免费观看www| 亚洲人成77777在线观看网| 亚洲japanese制服美女| 免费99精品国产自在在线| 欧美性猛交视频| 韩国精品久久久999| 欧美裸体xxxxx| 九九久久久久久久久激情| 欧美激情第99页| 91手机视频在线观看| 欧美日韩福利电影| 亚洲国产精品成人av| 久久久www成人免费精品张筱雨| 国产成人涩涩涩视频在线观看| 久久久精品久久久| 亚洲国产精品久久久| 亚洲精品国产综合久久| 久久中文字幕在线视频| 日本一区二区三区在线播放|