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對象讀取數據前不需要手動寫代碼連接數據庫,會自動識別,若數據庫連接沒開,則開啟,如果沒有關閉,則自動關閉。