ADO.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

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM