熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

ADO.NET中的五個主要對象

2013-11-13 10:04:09  來源: .NET編程 

  Connection 物件
   Connection 對象主要是開啟程序和數據庫之間的連結沒有利用連結對象將數據庫打開是無法從數據庫中取得數據的這個物件在ADONET 的最底層我們可以自己產生這個對象或是由其它的對象自動產生

  Command 物件
   Command 對象主要可以用來對數據庫發出一些指令例如可以對數據庫下達查詢新增修改刪除數據等指令以及呼叫存在數據庫中的預存程序等這個對象是架構在Connection 對象上也就是Command 對象是透過連結到數據源

  DataAdapter 物件
   DataSetCommand 對象主要是在數據源以及DataSet 之間執行數據傳輸的工作它可以透過Command 對象下達命令後並將取得的數據放入DataSet 對象中這個對象是架構在Command對象上並提供了許多配合DataSet 使用的功能在Beta 版中DataSetCommand 物件會更名為DataAdapter

  DataSet 物件
   DataSet 這個對象可以視為一個暫存區(Cache)可以把從數據庫中所查詢到的數據保留起來甚至可以將整個數據庫顯示出來DataSet 的能力不只是可以儲存多個Table 而已還可以透過DataSetCommand 對象取得一些例如主鍵等的數據表結構並可以記錄數據表間的關聯DataSet 對象可以說是ADONET 中重量級的對象這個對象架構在DataSetCommand 對象上本身不具備和數據源溝通的能力也就是說我們是將DataSetCommand 對象當做DataSet 對象以及數據源間傳輸數據的橋梁

  DataReader 物件
   當我們只需要循序的讀取數據而不需要其它操作時可以使用DataReader 對象DataReader對象只是一次一筆向下循序的讀取數據源中的數據而且這些數據是只讀的並不允許作其它的操作因為DataReader 在讀取數據的時候限制了每次只讀取一筆而且只能只讀所以使用起來不但節省資源而且效率很好使用DataReader 對象除了效率較好之外因為不用把數據全部傳回故可以降低網絡的負載

  ADONET   使用Connection   對象來連接數據庫使用Command   或DataAdapter對象來執行SQL語句並將執行的結果返回給DataReader   或   DataAdapter   然後再使用取得的DataReader   或DataAdapter   對象操作數據結果  
     Connection   對象  
    建立Connection   對象的代碼  
  OLEDB:     OleDbConnection   MyConnection=new   OleDbConnection();  
  SQL:           SqlConnection       MyConnection=new   SqlConnection();  
  ◆他們的ConnectionString屬性獲取或設置連接語句   MyConnectionConnectionString=server=(local);database=pubs;uid=sa;pwd=;  
  ◆DataBase   屬性獲取當前打開數據庫  
  ◆DataSource屬性獲取打開數據庫的連接實例  
  ◆Open   方法打開連接        
  ◆Close   方法關閉連接  
     Command與DataReader   對象  
  Command   對象中包含了提交數據庫系統的訪問信息OleDbCommand   與SqlCommand   對象它們的基本對象和操作方法是相同的在此介紹OleDbCommand的用法SqlCommand的用法類推即可  
  如   OleDbCommand     myComm   =   new   OleDbCommand(strQuerymyConnection);  
      第一個參數是sql語句或存儲過程名第二個參數是前面的Connection   對象的實例  
  Command   對象的只要的屬性和方法有  
  ◆Connection   屬性設置或獲取   Command對象使用的Connection   對象實例  
  ◆CommandText   屬性設置或獲取需要執行的sql語句或存儲過程名  
  ◆CommandType   屬性設置或獲取執行語句的類型它有個屬性值:StoredProceduce(存儲過程)   TableDirect     Text(標准的SQL語句)   默認是Text  
  ◆Parameters   屬性取得參數值集合  
  ◆ExecuteReader   方法執行CommandText指定的SQL語句或存儲過程名返回值類型為DataReader  
  ◆ExecuteNonQuery   方法與ExecuteReader   功能相同只是返回值為執行sql語句或存儲過程受影響的記錄行數  
  DataReader   的主要屬性和方法有  
  ◆FieldCount   屬性顯示當前數據記錄的字段總和  
  ◆IsClosed     屬性   判斷DataReader   對象是否已經關閉  
  ◆Close   方法關閉DataReader   對象  
  ◆GetString方法以String類型返回指定列中的值  
  ◆Getvalue   方法以自身的類型返回指定列中的值  
  ◆Getvalues   方法返回當前記錄所有字段的集合  
  ◆Read   方法光標指向DataReader對象的下一記錄  
   
  Sql連接實例  
  <%@   Import   Namespace=SystemData   %>  
  <%@   Import   Namespace=SystemDataSqlClient   %>  
  <script   language=C#   runat=server>  
  void   Page_Load(Object   sender   EventArgs   e)   {  
  SqlConnection   Conn=new   SqlConnection();    
  ConnConnectionString=server=(local);database=pubs;uid=sa;pwd=;  
  ConnOpen();  
  SqlCommand   Comm=new   SqlCommand(select   *   from   Authors   Conn);  
  SqlDataReader   dr=CommExecuteReader();        
  dgDataSource=dr;  
  dgDataBind();  
  ConnClose();  
  }  
  </script>  
  <asp:DataGrid   id=dg   runat=server   />  
  Aeccess   數據庫連接實例   (OleDbCommand   和   OleDbDataReader   使用實例)  
  <%@   Page   Language=C#   %>  
  <%@   Import   Namespace=SystemData%>  
  <%@   Import   Namespace=SystemDataOleDb%>  
  <script   Language=C#   Runat=Server>  
  OleDbDataReader   dr;  
  public   void   Page_Load(Object   srcEventArgs   e)  
  {  
    string    
   
  myConnstring=provider=MicrosoftJetOLEDB;   Data    
   
  Source=+ServerMapPath()+\\DataBase\\dbmdb;;  
  string   strSel=Select   *   from     BookMark;  
  OleDbConnection   myConn=   new   OleDbConnection  
   
  (myConnstring);  
  OleDbCommand   myComm=new   OleDbCommand(strSelmyConn);    
  myCommConnectionOpen();  
  dr=myCommExecuteReader();    
  dgDataSource=dr;  
  dgDataBind();  
  myConnClose();  
  }  
  </script>  
  <html>  
  <body>  
  <form   Runat=Server>  
  <asp:DataGrid   id=dg   runat=server   />  
  </form>  
  </body>  
  </html>  
   
  ++++++++++++++++++++++++++++++++++++++++++++++++  
  ++++++++++++++++++++++++++++++++++++++++++++++++ 

     DataSet   與DataAdapter  
  DataReader   對象只能實現對數據的讀取不能完成其他的操作

  ADONET提供一款更強大的數據操作對象――DataSet   可以將DataSet看成一個非連接的數據庫因為DataSet的內部存儲結構與數據庫很類似擁有數據表(DataTable)數據表關聯(DataRelation)DataSet中可以存儲多張表等DataSet擁有類似於數據庫的結構但它並不等同於數據庫首先他可以存儲來自數據庫的數據而且還可以存儲其他格式的數據比如   XML格式文檔  
  查詢數據  
  講到DataSet的數據庫應用先要了解ADONET中的另一個對象DataAdapter     
  它也分為SqlDataAdapter   和OleDbDataAdapter  
  建DataAdapte:  
  OleDbDataAdapter     MyAdapter=new   OleDbDataAdapter();  
  SqlDataAdapter           MyAdapter=new   SqlDataAdapter();  
  取得的DataAdapter   對象時必須賦予一個連接對象  
  MyAdapterSelectCommandConnection   =   MyConn;   或  
  MyAdapterUpdateCommandConnection   =Myconn;   或  
  MyAdapterDeleteCommandConnection   =   MyConn;   或  
  MyAdapterInsertCommandConnection   =Myconn;  
  如果需要執行SQL語句那麼還必須給相應的CommandText   屬性賦值代碼為  
  MyAdapter*CommandCommandText   =   SQL語句  
  寫這麼多行代碼似乎有些麻煩如果你只是查詢數據庫則可以在建立   DataAdapter實例時就完成上述工作  
  OleDbDataAdapter   MyAdapter   =   new   OleDbDataAdapter(strSelectobjConnection);  
  <%@   Page   Language=C#   Runat=Server%>  
  <%@   Import   Namespace=SystemData%>  
  <%@   Import   Namespace=SystemDataOleDb%>  
  <script   Language=C#   Runat=Server>  
  public   void   Page_Load(Object   srcEventArgs   e)  
  {  
    string    
   
  MyConnString=Provider=MicrosoftJetOLEDB;Data    
   
  Source=+ServerMapPath()+\\DataBase\\dbmdb;;  
  string   strSel=select   *   from   Score;  
  //建立一個DataSet   實例  
  DataSet   ds=new   DataSet();  
  OleDbConnection   MyConn=   new   OleDbConnection(MyConnString);  
  OleDbDataAdapter   MyAdapter   =   new   OleDbDataAdapter(strSelMyConn);  
  MyAdapterFill(dsScore);  
  dgDataSource=dsTables[Score]DefaultView;  
  dgDataBind();  
  }  
  </script>  
  <asp:DataGrid   id=dg   runat=Server    
    HeaderstyleBackColor=#aaaadd  
    AlternatingItemstyleBackColor=#eeeeee  
  />  
  將DataAdapter   於   DataSet   相聯系的是   DataAdapter   對象的   Fill   方法他有很多中用法:     MyDataAdapterFill(DataSet)                 MyDataAdapterFill(DataSetTableName)  
  MyDataAdapterFill(DataSet   StartRow      RowsCount   TableName)  
  DataSet   綁定至   DataGrid   控件顯示:  
  dgDataSource=   dsTables[Score]DefaultView;  
  dgDataBind();  
  dgDataSource=ds;  
  dgDataMember=Score;  
  dgDataBind();  
  提示:   DataSet中的各種集合訪問子項有兩種方法一種是用子項的名一種是用數字索引比如要訪問表Score可以用:   DataSetTables[]   訪問   (多張表依次類推)  
   
     插入數據:   DataSet   的結構和數據庫相似所有插入數據實質上就是在DataSet   的數據表裡插入一行(DataRow)  
  //新建一行  
  DataRow   dr=   dsTables[Score]NewRow();  
                dr   [Name]   =   addme;  
                dr   [class]   =;  
  dsTables[Score]RowsAdd(dr);     //將新建的行加到DataTable   的DataRow集合中  
  這樣對DataSet的操作僅僅是在DataSet中執行並不影響數據庫中的數據要使用DataAdapter   的   Update   方法(有多種方法)  
       DataAdapterUpdate(DataSet)   ;          DataAdapterUpdate(DataSet   TableName);  
  更新數據:   實際就是在DataSet   數據行上面直接修改數據  
  DataRow   dr   =   ds   Tables[Score]Rows[];     //取出第一行  
  dr   [Name]   =   比爾;     //修改  
                dr   [class]   =;  
  如果要更新數據庫則再調用   Update   方法        
  刪除數據:   找到相應的數據行然後刪除  
  DataRow   dr   =dsTables[Score]Row[];     drDelete();  
  注意:   DataAdapter   對象在數據發生改變時並不能自動產生數據庫系統所需的交易sql語句所有要建立一個CommandBuilder   對象   它能自動產生交易的sql語句  
  OleDbCommandBuilder   custcb   =   new   OleDbCommandBuilder(MyAdapter);  
  DataSet   的其他特征  
  DataSet   DataTable   和DataRow   都有一個十分有用的方法RejectChanges  
  它時操作對象拒絕已經發生的改變將數據復原該方法於AcceptChanges   HasErrors等屬性連用非常有用  
  If   (DataSetHasErrors)  
  {  
    DataSetRejectChanges();  
  }  
  else  
  {  
    DataSetAcceptChanges();   
 


From:http://tw.wingwit.com/Article/program/net/201311/12461.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.