ADO.NET操作MySQL數據庫


ADO.NET操作MySQL數據庫

  ADO.NET包括五大對象,分別是Connection、Command、DataReader、DataSet、DataAdapter,使用ADO.NET訪問數據庫有兩個步驟:建立數據庫連接、讀取或更新數據。讀取數據主要有兩種方法:Command與DataReader、DataAdapter與DataSet。

一、建立數據庫連接

(1)定義全局變量

//創建command對象      
 private MySqlCommand cmd = null;  
//創建connection連接對象  
 private MySqlConnection conn = null;  

(2)建立數據庫連接

//數據庫連接字符串  
String connstr = "server=localhost;Database =test;uid=root;pwd=‘’;charset=utf8";  
//建立數據庫連接  
conn = new MySqlConnection(connstr); 

二、讀取數據

(1)Command和DataReader對象讀取數據

說明:

  DataReader對象對數據庫檢索數據提供只讀的向前指針。DataReader是抽象類,不可以直接實例化,所以在使用前需要先創建Command對象,然后在創建DataReader對象,這種方式是只讀的,所以不可以對其進行修改。

讀取數據過程:

  1.創建連接

  2.打開連接

  3.創建Command對象

  4.執行Command的ExcuteReader()方法

  5.將DataReader綁定到數據控件中

  6.關閉DataReader

  7.關閉連接

代碼展示:

MySqlDataReader reader = null;  
try  
{                    
     conn.Open();    //②打開數據庫連接  
    cmd = new MySqlCommand("select * from comment", conn); //③使用指定的SQL命令和連接對象創建SqlCommand對象  
    reader = cmd.ExecuteReader(); //④執行Command的ExecuteReader()方法  
    //⑤將DataReader綁定到數據控件中   
    DataTable dt = new DataTable();   
    dt.Load(reader);   
    dataGridView1.DataSource = dt;  
}catch (Exception){   
    throw;  
}finally{   
    //⑥關閉DataReader   
    reader.Close();   
    //⑦關閉連接   
    conn.Close();  
}  

(2)DataSet和DataAdapter對象讀取數據

說明:

  DataAdapter是DataSet與數據庫之間的媒介,DataAdapter打開一個連接並執行相應的mysql語句,DataSet相當於一個小型的數據庫,可以存儲很多個表,DataSet是一個集合對象,我們可以讀取DataSet中的數據,並且可以更新其中的數據。

讀取數據的過程:

  1.創建連接

  2.創建DataAdapter對象

  3.創建DataSet對象

  4.執行DataAdapter對象的Fill()方法

  5.將DataSet中的表綁定到數據控件中

 

代碼展示:

try  
   {  
       string mysqlText = "select * from comment;";  
       //使用指定的SQL命令和連接對象創建SqlDataAdapter對象  
       MySqlDataAdapter mysda = new MySqlDataAdapter(mysqlText, conn);  
       DataSet ds = new DataSet();  //創建DataSet對象  
  
       //使用SqlDataAdapter的Fill方法填充DataSet mysda.Fill(ds, "comment");  
       //將DataSet中的表綁定到數據控件中  
       BindingSource bs;  
       bs = new BindingSource();   
       bs.DataSource = ds.Tables["comment"];   
       dataGridView1.DataSource = bs;  
   }  
   catch (Exception) {   
       throw;   
   }  

第三步、更新數據

(1)command對象更新數據

說明:

  事物是一組由相關任務組成的單元,該單元中的任務要么全部成功,要么全部失敗。若失敗,則全部回滾,事物的四個特性(ACID)分別是原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持續性(Durability)。

代碼展示:

//數據庫連接字符串  
String connstr = "server=localhost;Database =test;uid=root;pwd=1;charset=utf8";  
  
//建立數據庫連接  
using (conn = new MySqlConnection(connstr))  
{  
    conn.Open();  
    //啟動一個事務  
    using (MySqlTransaction transaction = conn.BeginTransaction())  
    {  
          
        using (cmd=conn.CreateCommand())  
        {  
            try  
            {  
                cmd.Transaction = transaction;  //為命令指定事務  
                cmd.CommandText = "insert into comment(quantity,comment) value('11','很好');";                           
                cmd.ExecuteNonQuery();  
                cmd.CommandText = "insert into comment(quantity,comment) value('12','很好');";  
                cmd.ExecuteNonQuery();  
                transaction.Commit();    //事務提交  
                  
            }  
            catch (Exception)  
            {  
                  
                transaction.Rollback(); //事務回滾  
                  
            }  
        }  
    }  
}  

(2)DataAdapter對象更新數據

<span style="font-size:18px;">//數據庫連接字符串  
            String connstr = "server=localhost;Database =test;uid=root;pwd=1;charset=utf8";  
            //建立數據庫連接  
            conn = new MySqlConnection(connstr);  
             
            try  
            {              
                //comment是表名,quantity是字段名  
                string mysqlText = "select * from comment;";  
                MySqlDataAdapter mysda = new MySqlDataAdapter(mysqlText, conn);  
                DataSet ds = new DataSet();  
                mysda.Fill(ds, "comment");  
                //綁定MySqlDataAdapter對象,自動生成從DataSet更新MySql的命令  
                MySqlCommandBuilder cb = new MySqlCommandBuilder(mysda);    
                //更新ds中的數據  
                ds.Tables["comment"].Rows[0]["quantity"] = 111;  
                //更新數據庫中的數據  
                mysda.Update(ds, "comment");  
                  
            }  
            catch (Exception)  
            {  
                throw;  
            }</span>  

總結:

1.DataReader對象讀取數據庫中數據只能一條條讀取,並且是只讀的,不可以修改;DataSet與DataAdapter對象讀取的數據可以讀取且可以修改,DataSet中可以存放很多表。

2.DataReader讀取數據前需要手動寫代碼連接數據庫,即conn.open(),查詢完畢后需要手動寫代碼關閉數據庫連接;DataSet與DataAdapter對象讀取數據前不需要手動寫代碼連接數據庫,會自動識別,若數據庫連接沒開,則開啟,如果沒有關閉,則自動關閉。

 


免責聲明!

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



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