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

數據訪問與ADO.NET

2013-11-13 10:13:20  來源: .NET編程 
ADONET的設計目標
  ADONET是Microsoft公司發布的新一代數據存取技術是一個全新的數據庫訪問模型使應用程序的開發人員能方便的訪問不同的數據源
  ADONET提供對SQL Server等數據源以及通過OLEDB和XML公開的數據源的一致訪問數據共享應用程序可以使用ADONET來連接到這些數據源並檢索操作和更新數據
設計目標
  n  支持斷開式多層編程模式
  n  能夠與XML緊密集成
  n  具有能夠組合來自多個不同數據源的數據通用數據表示形式
  n  具有為與數據庫交互而優化的功能
ADONET體系結構
  
  ADONET的兩個核心組件)DataSet ()數據提供程序(DataProvider:包括ConnectionCommandDataReaderDataAdapter)
 
  DataSet
  u  DataSet 是ADONET的斷開式結構的核心組件
  u  設計目的為了實現獨立於任何數據源的數據訪問
  u  可以用於多種不同的數據源用於XML數據或用於應用程序本地數據
  u  DataSet包含一個或多個DataTable對象集合



  數據提供程序(DataProvider)
  設計目標為了實現數據操作和對數據快速只進只讀訪問
  NET框架提供了個數據提供程序
          SQL Server數據提供程序
          OLE DB數據提供程序
          ODBC數據提供程序
          Oracle數據提供程序
  DataProvider的四個對象
  a)        Connection對象提供與數據源的連接
  b)       Command對象使用戶能夠訪問用於返回數據修改數據運行存儲過程以及發送或檢索參數信息的數據庫命令
  c)        DataReader對象從數據源中提供高性能的數據流讀取數據
  d)       DataAdapter對象提供連接DataSet對象和數據源的橋梁
  DataAdapter使用Command對象在數據源中執行SQL命令以便將數據加載到DataSet中並使對DataSet中數據的更改與數據源保持一致
  數據庫連接
  要訪問數據庫首先必須建立與數據庫的連接
  使用Connection對象創建和管理連接
  
  連接字符串
  在建立連接時通常要提供一些數據源的信息如數據庫的名稱數據庫所在物理位置用戶賬號密碼等等(和一般連接數據庫嗎沒什麼區別)
  通過Connection對象的ConnectionString屬性來設置
  打開和關閉連接
  連接的兩個主要方法是Open和Close
  Open方法
  使用ConnectionString屬性中的信息聯系數據源並建立一個打開的連接
  Close方法
  關閉連接是非常必要的因為大多數據源只支持有限書目的打開的連接並且打開的連接占用寶貴的系統資源
  如果正在使用DataProvider或Command則不必顯示打開和關閉連接因為當調用這些對象的某個方法(例如DataAdapter的Fill或Update方法)時該方法將檢查連接是否已經打開如果沒有適配器將打開連接執行其邏輯然後再關閉連接
  Command對象
  在用Connection對象成功連接數據庫後可以用command對象對數據進行操作如對數據進行增改等操作
  Command對象表示要對數據源執行的一個SQL語句或存儲過程
  DataAdapter對象
  DataAdapter(數據適配器)用來建立和初始化數據表並將其填入DataSet對象在內存中存儲數據
  DataAdapter的主要方法是Fill用來將來自DataAdapter中的數據填入DataSet中
  DataSet
  DataSet對象是一個存儲在內存中的離線數據庫它並未與數據庫建立及時的連接
  DataSet對象專門用來存儲從數據源中讀出的數據無論是SQL Server數據庫還是Access數據庫在DataSet中存儲方式都是一致的用戶無法從DataSet中判斷讀取的數據庫類型
  DataReader對象
  如果不需要DataSet所提供的功能則可以使用DataReader以只讀方式返回數據
  因為節省了DataSet所使用的內存並省去了創建DataSet並填充其內容所需要的必要處理所以可以提高應用程序的性能


C#代碼示例
  [csharp]
  using System;
  using SystemCollectionsGeneric;
  using SystemLinq;
  using SystemText;
  using SystemDataSqlClient;
  using SystemData;
  using SystemTextRegularExpressions;
  using SystemWindowsForms;
  namespace 圖書管理
  {
  class BaseOperate
  {
  //建立數據庫連接
  public SqlConnection getcon()
  {
  string str_sqlcon = data source=;database=library_sys;uid=sa;pwd=;
  try
  {
  SqlConnection myCon = new SqlConnection(str_sqlcon)
  return myCon;
  }
  catch (Exception ex)
  {
  MessageBoxShow(出錯了鏈接出錯MessageBoxButtonsOK)
  throw ex;
  }
  }
  //執行sqlcommand命令但無返回值
  public void getcom(string sqlstring)
  {
  SqlConnection sqlcon = thisgetcon()
  sqlconOpen()
  SqlCommand sqlcom = new SqlCommand(sqlstring sqlcon)
  sqlcomExecuteNonQuery()
  sqlcomDispose()
  sqlconClose()
  sqlconDispose()
  }
  //執行sql語句並返回一個dataset數據集對象
  public DataSet getds(string sqlstring)
  {
  SqlConnection sqlcon = thisgetcon()
  SqlDataAdapter sqlda = new SqlDataAdapter(sqlstring sqlcon)
  DataSet myds = new DataSet()
  sqldaFill(myds)
  return myds;
  }
  //執行sql語句並返回一個sqlReader類型的對象用於讀取查詢的數據
  public SqlDataReader getread(string sqlstring)
  {
  SqlConnection sqlcon = thisgetcon()
  SqlCommand sqlcom = new SqlCommand(sqlstring sqlcon)
  sqlconOpen()
  SqlDataReader sqlread = sqlcomExecuteReader(CommandBehaviorCloseConnection)
  return sqlread;
  }


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