asp.net 之ADO.NET操縱數據庫
2006/2/7 21:27:00

ADO.NET提供了Connection來連接數據庫,同時也提供了Command對象來查詢數據庫。同Connection對象一樣,Command也有兩種:OleDbCommand和SqlCommand.其區別同Connection對象。
  要操縱數據庫,必須先使用Connection來連接到數據庫,再創建一個Command來查詢。有幾種創建方式,例:
  SqlCommand cmd;
  string strCon="server=localhost;database=Northwind;Trusted_Connection=Yes;";
  string strqry="select * from Categories";
  SqlConnection con=new SqlConnection(strCon);
  con.Open();
  1cmd=con.CreateCommand(); //這里使用用Connection對象的CreateCommand方法來創建一個Command對象。
  cmd.CommandText=strqry;
  // SqlDataReader reader=cmd.ExecuteReader();
  2 cmd=new SqlCommand();  //直接使用new 關鍵字來創建
    cmd.CommandText=strqry;
    cmd.Connection=con;  //設置與數據庫的連接
 3cmd=new SqlCommand(strqry,con); //直接在new的時候帶兩個參數來創建

 執行方式:
(主要有這么幾種,cmd.ExecuteReader();cmd.ExecuteNonQuery();cmd.ExecuteScalar();cmd.ExecuteXmlReader();)
 1,ExecuteReader();返回一個SqlDataReader對象或OleDbDataReader對象,這個看你的程序的需要去  做。可以通過這個對象來檢查查詢結果,它提供了“游水”式的執行方式,即從結果中讀取一行之后,移動到另一行,則前一行就無法再用。有一點要注意的是執行之后,要等到手動去調用Read()方法之后,DataReader對象才會移動到結果集的第一行,同時此方法也返回一個Bool值,表明下一行是否可用,返回True則可用,返回False則到達結果集末尾。
使用DataReader可以提高執行效率,有兩種方式可以提高代碼的性能:一種是基于序號的查找,一個是使用適當的Get方法來查找。因為查詢出來的結果一般都不會改變,除非再次改動查詢語句,因此可以通過定位列的位置來查找記錄。用這種方法有一個問題,就是可能知道一列的名稱而不知道其所在的位置,這個問題的解決方案是通過調用DataReader 對象的GetOrdinal()方法,此方法接收一個列名并返回此列名所在的列號。例:
  int id=reader.GetOrdinal("CategoryName");
  while(reader.Read())
  {
        Response.Write(reader[id]);
  }
  reader.Close();
  至于第二種方式很直觀,例:
 while(reader.Read())
  {
     Response.Write(reader.GetInt32(0).ToString()+" "+reader.GetString(1).ToString()+" <br>");
  }
 DataReader的GetInt32()和GetString()通過接收一個列號來返回一個列的值,這兩種是最常用的,其中  還有很多其它的類型。
(注:DataReader對象在調用Close()方法即關閉與數據庫的連接,如果在沒有關閉之前又重新打開第二個連接,則會產生一條異常信息)
 2.,ExecuteNonQuery() 這個方法并不返回一個DataReader對象,而是返回一個int類型的值,即在執行之后在數據庫中所影響的行數。
 例:   
 int affectrows=cmd.ExecuteNonQuery();
  Response.Write(affectrows +" 條記錄受影響");
  3,ExecuteScalar() 這個方法不接受任何參數,僅僅返回查詢結果集中的第一行第一列,而忽略了其它的行和列,而且返回的是一個object類型,在使用之前必須先將它強制轉換為所需類型。如果返回的僅僅是一個單獨的數據元,則可以使用此方法來提高代碼的性能。例:
  string strCon="server=localhost;database=Northwind;Trusted_Connection=Yes;";
  string strqry="select count(*) from Categories";
  SqlConnection con=new SqlConnection(strCon);
  con.Open();
  SqlCommand cmd=con.CreateC

下一頁
返回列表
返回首頁 主站蜘蛛池模板: 免费A级毛片无码免费视频首页| 国产精品乱码一区二区三区| 久久久精品人妻无码专区不卡| 欧美成a人片在线观看久| 免费能直接在线观看黄的视频 | 性按摩xxxx| 久久久精品波多野结衣| 欧美69式视频在线播放试看| 亚洲精品午夜在线观看| 精品久久久久香蕉网| 国产一级淫片免费播放| 黑巨人与欧美精品一区| 国产精品入口在线看麻豆| 99久久人妻精品免费二区| 少妇精品久久久一区二区三区| 久久久久久AV无码免费网站| 晓雪老师下面好紧好湿| 亚洲婷婷第一狠人综合精品| 特级毛片全部免费播放a一级| 午夜视频免费国产在线| 荡女淫春护土bd在线观看| 国产成人午夜高潮毛片| ass亚洲**毛茸茸pics| 国产老师的丝袜在线看| av无码免费永久在线观看| 尤物在线影院点击进入| 中文字幕日本一区| 日本免费精品一区二区三区| 九九久久国产精品免费热6| 欧美成人看片一区二区三区尤物 | 女人张开腿日出白浆视频| 中文字幕一区日韩在线视频| 日本理论片午午伦夜理片2021| 亚洲av丰满熟妇在线播放| 欧美巨大xxxx做受高清| 亚洲欧美国产一区二区三区| 淫444kkk| 亚洲视频在线免费播放| 男人把女人桶爽30分钟动态| 免费网站看v片在线成人国产系列| 精品福利一区二区三区免费视频 |