標籤:static ndt manager and text str 服務 ima .net
ADO.NET主要分為五個對象:
1)Connection對象:用來串連程式與資料庫。沒有利用連線物件將資料庫開啟,是無法從資料庫中取得資料的。Close和Dispose的區別,Close之後還可以用Open開啟資料庫,Dispose是釋放資源,Dispose之後將不能再用Open。
2)Command對象:主要迎來對資料庫發出一些指令,例如增刪改查等指令,另外也可以調用資料庫中的預存程序,這個對象時架構在Connection對象上,也就是Command對象是透過Connection串連到資料來源。
3)DataAdapter:主要用在資料來源以及DataSet之間執行資料轉送的工作,可以通過Command對象下達命令之後,將取得的資料放入DataSet中,這個對象是架構在Command對象上,並提供了許多配合DataSetshiyong 的功能。
4)DataSet:這個對象可是看作是一個暫存區(暫時儲存地區),可以把從資料庫中所查詢到的資料保留起來,甚至可以將整個資料庫顯示出來,DataSet是存放在記憶體中的,DataSet不僅可以儲存多個Table,還可以通過DataAdapter對象取得一些例如主鍵的呢過的資料表結構,並可以記錄資料表之間的關聯。DataSet對象可以說是ADO.NET中的重量級對象,這個對象架構在DataAdapter對象上,本身不具備和資料來源溝通的能力,也就是說,我們是將DataAdapter對象當做是DataSet與資料來源DB之間的橋樑 ,DataSet中包含若干DataTable,DataTable中包含若干DataRow。
5)DataReader:當我們只需要迴圈的讀取資料而不需要其他的操作的時候,可以使用DataReader對象。DataReader對象只是一次一條向下迴圈的讀取資料來源中的資料,這些資料是存在資料庫伺服器中的,而不是一次性載入到程式的記憶體中的,只能讀取到當前行的資料,而且這些資料只是唯讀,並不允許其他動作。因為DataReader在讀取資料的時候限制了一次一條的讀取,而且只能唯讀,所以使用起來不但節省資源而且效率很好,使用DataReader對象除了效率好之外,因為不用把資料全部傳回,因此可以降低網路的負載。
總結:ADO.NET使用Connection對象來串連資料庫,使用Command對象或DataAdapter對象來執行SQL語句,並將執行的結果返回給DataReader或者DataAdapter,然後在使用取得的DataReader或者DataAdapter對象操作資料結果。
以下是常用的sqlHelper.cs(部分功能實現):
using System;using System.Collections.Generic;using System.Configuration;using System.Linq;using System.Web;using System.Data;using System.Data.SqlClient;namespace WebApplication1.WebHelper{ public static class SqlHelper { //取得連接字串 public static readonly string connString = ConfigurationManager.ConnectionStrings["defaultConnString"].ConnectionString; //sql操作過程:開啟串連-->建立命令-->給sql語句-->執行語句-->處理結果 public static int ExecuteNonQuery(string sql) { using (SqlConnection conn = new SqlConnection(connString)) { conn.Open(); using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = sql; //返回執行sql語句影響的行數 return cmd.ExecuteNonQuery(); } } } public static object ExecuteScalar(string sql) { using (SqlConnection conn = new SqlConnection(connString)) { conn.Open(); using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = sql; return cmd.ExecuteScalar(); } } } //只用來執行查詢結果比較少的sql public static DataSet ExecuteDataSet(string sql) { //方法1 //using (SqlConnection conn = new SqlConnection(connString)) //{ // conn.Open(); // using (SqlCommand cmd = conn.CreateCommand()) // { // cmd.CommandText = sql; // SqlDataAdapter adapter = new SqlDataAdapter(cmd); // DataSet ds = new DataSet(); // adapter.Fill(ds); // return ds; // } //} //方法2 using (SqlConnection conn = new SqlConnection(connString)) { SqlCommand cmd = new SqlCommand(); PrepareCommand(cmd,conn,sql); using (SqlDataAdapter adapter = new SqlDataAdapter(cmd)) { DataSet ds = new DataSet(); adapter.Fill(ds); return ds; } ; } } public static void PrepareCommand(SqlCommand cmd,SqlConnection conn, string sql) { if (conn.State != ConnectionState.Open) { conn.Open(); } cmd.Connection = conn; cmd.CommandText = sql; } }}sqlhelper.cs
ADO.NET的主要對象