ADO.NET包括5大对象,分别是Connection、Command、DataReader、DataSet、DataAdapter,使用ADO.NET访问数据库有两个步骤:建立数据库连接、读取或更新数据。读取数据主要有两种方法:Command与DataReader、DataAdapter与DataSet。
连接mysql数据库准备工作
1.在mysql的官网下载免安装的.zip,链接如下:http://dev.mysql.com/downloads/connector/net/5.0.html,platform选择.NET & Mono。
2.下载后解压,解压文件中打开V4.0(本篇博文中的例子是用的这个版本)
3.打开后可以看到一些dll文件,将这些文件添加引用到你的项目中
4.如下的例子是对mysql中的数据库test中的表comment表进行的操作。
第一步:建立数据库连接
1.定义全局变量
- private MySqlCommand cmd = null;
- private MySqlConnection conn = null;
2.建立数据库连接
- String connstr = "server=localhost;Database =test;uid=root;pwd=1;charset=utf8";
- conn = new MySqlConnection(connstr);
第二步:读取数据
1.command和DataReader对象读取数据
说明:
DataReader对象对数据库检索数据提供只读的向前指针。DataReader是抽象类,不可以直接实例化,所以在使用前需要先创建Command对象,然后再创建DataReader对象,这种方式是只读的,所以不可以对其进行修改。
读取数据的过程:
①创建连接
②打开连接
③创建Command对象
④执行Command的ExecuteReader()方法
⑤将DataReader绑定到数据控件中
⑥关闭DataReader
⑦关闭连接
代码展示:
- MySqlDataReader reader = null;
- try
- {
- conn.Open();
- cmd = new MySqlCommand("select * from comment", conn);
- reader = cmd.ExecuteReader();
-
- DataTable dt = new DataTable();
- dt.Load(reader);
- dataGridView1.DataSource = dt;
- }catch (Exception){
- throw;
- }finally{
-
- reader.Close();
-
- conn.Close();
- }
2.DataSet和DataAdapter对象读取数据
说明:
DataAdapter是DataSet与数据库之间的媒介,DataAdapter打开一个连接并执行相应的mysql语句,DataSet相当于一个小型的数据库,可以存储很多个表,DataSet是一个集合对象,我们可以读取DataSet中的数据,并且可以更新其中的数据。
读取数据的过程:
①创建连接
②创建DataAdapter对象
③创建DataSet对象
④执行DataAdapter对象的Fill()方法
⑤将DataSet中的表绑定到数据控件中
代码展示:
- try
- {
- string mysqlText = "select * from comment;";
-
- MySqlDataAdapter mysda = new MySqlDataAdapter(mysqlText, conn);
- DataSet ds = new 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
- {
-
- string mysqlText = "select * from comment;";
- MySqlDataAdapter mysda = new MySqlDataAdapter(mysqlText, conn);
- DataSet ds = new DataSet();
- mysda.Fill(ds, "comment");
-
- MySqlCommandBuilder cb = new MySqlCommandBuilder(mysda);
-
- 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对象读取数据前不需要手动写代码连接数据库,会自动识别,若数据库连接没开,则开启,如果没有关闭,则自动关闭。