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对象读取数据前不需要手动写代码连接数据库,会自动识别,若数据库连接没开,则开启,如果没有关闭,则自动关闭。