C# Ado.net

ADO.NET
ADO.NET是.NET數據庫的訪問架構,ADO.NET是數據庫應用程序和數據源之間的溝通的橋樑,提供一個面向對象的數據訪問架構,用來開發數據庫應用程序。提供對象,對象封裝了操作數據庫的方法
組成:
  • .Net Framework數據提供程序
  • 數據集 DataSet
ADO.NET結構
 

五大類庫:

Connection    用於建立與數據庫的鏈接
Command    用於執行SQL語句 三個常用方法:
            ExecuteNonQuery  :用於增刪改,返回受影響的行數
            ExecuteReader:執行查詢,返回一個SqlDataReader對象
            ExecuteScalar:執行查詢,并返回首行首列
DataReader    用於讀取數據
DataAdapter    用於填充吧數據填充到DataSet
DataSet    數據集 ,用於程序中
 
程序訪問數據庫方法步驟
①創建一個到數據庫的鏈接--- >②打開數據庫鏈接--- > ③創建ADO記錄集--- > ④從記錄中提取需要的數據--- >⑤關閉記錄集--- >⑥關閉鏈接
 
使用ADO.NET需要在程序中引用System.Data.SqlClient,其中包含了對Sql Server進行操作的數據訪問類
  • SqlConnection    鏈接數據庫
  • SqlCommand    數據庫命名對象
  • SqlCommandBuilder    生成SQL命令
  • SqlDataReader    數據讀取器
  • SqlDataAdapter    數據適配器 填充DataSet
  • SqlParameter    為存儲過程定義參數
  • SqlTransaction    數據庫事務
class Program
    {
        static void Main(string[] args)
        {  
            //數據庫連接字符串
            string sql = "server =;database=TEST; user =; pwd=;";
            SqlConnection conn = new SqlConnection(sql); //創建連接實例化對象,連接數據源
            SqlCommand cmd = conn.CreateCommand();//數據庫操作類
cmd.CommandText = "select *from SQL_T go delete from SQL_T where 姓名='Tom'"; //編寫數據庫語句
            conn.Open();  //打開數據庫連接,操作數據庫數據
            //DataReader數據讀取器,ExcuteReader 獲得數據
            SqlDataReader dr = cmd.ExecuteReader();//
            int count = 0;
            if(dr.HasRows)
            {
                while(dr.Read())
                {
                    count++;
                    string id = dr["ID"].ToString();
                    string name = dr["姓名"].ToString();
                    string classname = dr["班級"].ToString();
                    string score = dr["分數"].ToString();
                    Console.WriteLine(id + "|" + name+"|"+classname+"|"+score);
                }
            }
            Console.WriteLine("一共有"+ count + "行數據");
           
           
            //刪除
cmd.CommandText = "delete from SQL_T where 姓名='Tom';";
            int a = cmd.ExecuteNonQuery();  //ExecuteNonQuery返回受影響的行數
            if(a>0)
            {
                Console.WriteLine("刪除了"+ a +"");
            }else{
                Console.WriteLine("刪除失敗");
            }
            conn.Close();  //接受連接有限,使用完關閉連接
            Console.ReadLine();
        }
    }

DataAdapter數據適配器 填充DataSet

 
class DataAdapter
    {
        static void Main(string[] args)
        {
            DataSet dataSet = new DataSet();
            using(sqlConnection conn = new sqlConnection(""))
            {
                conn.Open();
                SqlCommand command = conn.CreateCommand();
command.CommandText = "select*from SQL_T";//編寫數據庫語句
                SqlDataAdapter dataAdapter = new SqlDataAdapter(command);//創建SqlDataAdapter對象  并執行sql
                dataAdapter.Fill(dataSet);//填充數據
            }
        }
    }
/// <summary>
        /// 使用SqlCommandBuilder對數據增刪改查
        /// </summary>
        private static void SqlCommandBuilder()
        {
            using (sqlConnection conn = new sqlConnection(""))
            {
                conn.Open();
                SqlCommand command = conn.CreateCommand();
                command.CommandText = "select*from SQL_T";//編寫數據庫語句
                SqlDataAdapter da = new SqlDataAdapter(command);
                DataSet ds = new DataSet();
                da.Fill(ds);
                SqlCommandBuilder cmdBuilder = new SqlCommandBuilder(da);//作用是將DataSet增加的數據轉化為SQL語句來跟新數據庫
                DataRow row = ds.Tables[0].NewRow();//添加行,實例化一個行對象
                row[0] = "11";
                row[1] = "22";
                ds.Tables[0].Rows.Add(row);  //添加到表中
                ds.Tables[0].Rows[1] = ""; //修改數據

                ds.Tables[0].Rows[2].Delete();//刪除數據
                da.Update(ds);             //將DataSet中表和數據庫進行對比更新
            }
        }
DataReader 和DataAdapter 區別
 
SqlDataReader  :
  • 只能讀取數據庫,而且所有操作必須處於連接狀態,但是要對數據庫進行操作時,只能借助SqlCommand類。
  • 一次只在內存中讀取一行,減少系統開銷
  • 讀取時需通過自身Read()方法循環讀取數據到指定對象
  • 需要通過調用自身 Close()方法斷開連接
SqlDataAdapter: 
  • 建立在SqlCommand對象之上,具有SqlCommand類的一切功能,能夠將數據填充到DataSet對象中,而且不需要再連接到數據庫,可以直接從DataSet或DataTable中獲取數據
  • 可通過Fill()方法一次性填充數據到DataSet
  • 讀取完數據庫后自動斷開連接

DataSet    DataTable    DataRow  

DataSet    DataSet是不依賴於數據庫的獨立數據集合,即關閉數據庫依然可以使用,DataSet裡面可以存儲多個表(DataTable)
DataTable  表示內存中數據的一個表,存儲在內存中的表,在持久化(dataAdapter.Update)到數據庫之前,是不會對數據庫產生影響的
DataTable 成員DataRow    DataTable是由一個個DataRow組成而成。DataTable.Row[i]即表示其中的第i行
DataRowState    是DataRow中一個很重要的狀態包括(Added添加、Deleted刪除、Detached分離、Modified修改、Unchange未改變)
static void Main(string[] args)
        {   //數據庫連接字符串
            string sql = "server =GSDEV018HZ;database=TEST; user =GSB6275; pwd=ygt562356610;";
            //查詢
            string commandString = "Select*from SQL_T";
            //創建SqlDataAdapter對象  并執行sql
            SqlDataAdapter dataAdapter = new SqlDataAdapter(commandString,sql);
            //創建數據集dataSet
            DataSet dataSet = new DataSet();
            //將數據添加到數據集中
            dataAdapter.Fill(dataSet);
            //將數據表添加到數據集中
            DataTable dataTable = dataSet.Tables("SQL_T");
           
        }
原文地址:https://www.cnblogs.com/ygtup/p/9360684.html