前言

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.定义全局变量

  1. //创建command对象
  2. private MySqlCommand cmd = null;
  3. //创建connection连接对象
  4. private MySqlConnection conn = null;

2.建立数据库连接

  1. //数据库连接字符串
  2. String connstr = "server=localhost;Database =test;uid=root;pwd=1;charset=utf8";
  3. //建立数据库连接
  4. conn = new MySqlConnection(connstr);

第二步:读取数据

1.command和DataReader对象读取数据

说明:
     DataReader对象对数据库检索数据提供只读的向前指针。DataReader是抽象类,不可以直接实例化,所以在使用前需要先创建Command对象,然后再创建DataReader对象,这种方式是只读的,所以不可以对其进行修改。
读取数据的过程:
    ①创建连接
    ②打开连接
    ③创建Command对象
    ④执行Command的ExecuteReader()方法
    ⑤将DataReader绑定到数据控件中
    ⑥关闭DataReader
    ⑦关闭连接
代码展示:
  1. MySqlDataReader reader = null;
  2. try
  3. {
  4. conn.Open();    //②打开数据库连接
  5. cmd = new MySqlCommand("select * from comment", conn); //③使用指定的SQL命令和连接对象创建SqlCommand对象
  6. reader = cmd.ExecuteReader(); //④执行Command的ExecuteReader()方法
  7. //⑤将DataReader绑定到数据控件中
  8. DataTable dt = new DataTable();
  9. dt.Load(reader);
  10. dataGridView1.DataSource = dt;
  11. }catch (Exception){
  12. throw;
  13. }finally{
  14. //⑥关闭DataReader
  15. reader.Close();
  16. //⑦关闭连接
  17. conn.Close();
  18. }


2.DataSet和DataAdapter对象读取数据

说明:
     DataAdapter是DataSet与数据库之间的媒介,DataAdapter打开一个连接并执行相应的mysql语句,DataSet相当于一个小型的数据库,可以存储很多个表,DataSet是一个集合对象,我们可以读取DataSet中的数据,并且可以更新其中的数据。
读取数据的过程:
    ①创建连接
    ②创建DataAdapter对象
    ③创建DataSet对象
    ④执行DataAdapter对象的Fill()方法
    ⑤将DataSet中的表绑定到数据控件中
代码展示:
  1. try
  2. {
  3. string mysqlText = "select * from comment;";
  4. //使用指定的SQL命令和连接对象创建SqlDataAdapter对象
  5. MySqlDataAdapter mysda = new MySqlDataAdapter(mysqlText, conn);
  6. DataSet ds = new DataSet();  //创建DataSet对象
  7. //使用SqlDataAdapter的Fill方法填充DataSet mysda.Fill(ds, "comment");
  8. //将DataSet中的表绑定到数据控件中
  9. BindingSource bs;
  10. bs = new BindingSource();
  11. bs.DataSource = ds.Tables["comment"];
  12. dataGridView1.DataSource = bs;
  13. }
  14. catch (Exception) {
  15. throw;
  16. }


第三步:更新数据

1.command对象更新数据

说明:
    事务是一组由相关任务组成的单元,该单元中的任务要么全部成功,要么全部失败。若失败,则全部回滚,事务的四个特性(ACID)分别是原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持续性(Durability)。详细信息不再赘述,不知道的可以百度一下哦!
代码展示:
  1. //数据库连接字符串
  2. String connstr = "server=localhost;Database =test;uid=root;pwd=1;charset=utf8";
  3. //建立数据库连接
  4. using (conn = new MySqlConnection(connstr))
  5. {
  6. conn.Open();
  7. //启动一个事务
  8. using (MySqlTransaction transaction = conn.BeginTransaction())
  9. {
  10. using (cmd=conn.CreateCommand())
  11. {
  12. try
  13. {
  14. cmd.Transaction = transaction;  //为命令指定事务
  15. cmd.CommandText = "insert into comment(quantity,comment) value('11','很好');";
  16. cmd.ExecuteNonQuery();
  17. cmd.CommandText = "insert into comment(quantity,comment) value('12','很好');";
  18. cmd.ExecuteNonQuery();
  19. transaction.Commit();    //事务提交
  20. }
  21. catch (Exception)
  22. {
  23. transaction.Rollback(); //事务回滚
  24. }
  25. }
  26. }
  27. }

2.DataAdapter对象更新数据

  1. <span style="font-size:18px;">//数据库连接字符串
  2. String connstr = "server=localhost;Database =test;uid=root;pwd=1;charset=utf8";
  3. //建立数据库连接
  4. conn = new MySqlConnection(connstr);
  5. try
  6. {
  7. //comment是表名,quantity是字段名
  8. string mysqlText = "select * from comment;";
  9. MySqlDataAdapter mysda = new MySqlDataAdapter(mysqlText, conn);
  10. DataSet ds = new DataSet();
  11. mysda.Fill(ds, "comment");
  12. //绑定MySqlDataAdapter对象,自动生成从DataSet更新MySql的命令
  13. MySqlCommandBuilder cb = new MySqlCommandBuilder(mysda);
  14. //更新ds中的数据
  15. ds.Tables["comment"].Rows[0]["quantity"] = 111;
  16. //更新数据库中的数据
  17. mysda.Update(ds, "comment");
  18. }
  19. catch (Exception)
  20. {
  21. throw;
  22. }</span>

总结

     1.DataReader对象读取数据库中数据只能一条条读取,并且是只读的,不可以修改;Dataset与DataAdapter对象读取的数据可以读取且可以修改,DataSet中可以存放很多表。
       2.DataReader读取数据前需要手动写代码连接数据库,即conn.open(),查询完毕后需要手动写代码关闭数据库连接;DataSet与DataAdapter对象读取数据前不需要手动写代码连接数据库,会自动识别,若数据库连接没开,则开启,如果没有关闭,则自动关闭。

ADO.NET操作MySQL数据库的更多相关文章

  1. 以ADO形式操作mysql数据库

    首先得需要一个连接mysql的helper类: public class MySqlHelper { #region [ Connection ] public static string conne ...

  2. Code First操作Mysql数据库

    前面博客也讲了,自己做一个网站,选用的是MVC+EF Code First+MySql+EasyUI,先说下技术选型.一.为什么选择MVC? 因为之前自己做的系统大部分是webForm,MVC的之前也 ...

  3. C++操作Mysql数据库/Linux下

    本文链接:https://blog.csdn.net/Tanswer_/article/details/72796570想用C++写项目,数据库是必须的,所以这两天学了一下C++操作Mysql数据库的 ...

  4. PHP操作MySQL数据库5个步骤

    PHP操作MySQL数据库一般可分为5个步骤:1.连接MySQL数据库服务器:2.选择数据库:3.执行SQL语句:4.关闭结果集:5断开与MySQL数据库服务器连接. 1.用mysql_connect ...

  5. python操作mysql数据库的相关操作实例

    python操作mysql数据库的相关操作实例 # -*- coding: utf-8 -*- #python operate mysql database import MySQLdb #数据库名称 ...

  6. 转 用C API 操作MySQL数据库

    用C API 操作MySQL数据库 参考MYSQL的帮助文档整理 这里归纳了C API可使用的函数,并在下一节详细介绍了它们.请参见25.2.3节,“C API函数描述”. 函数 描述 mysql_a ...

  7. PHP操作mysql数据库:[2]查询数据听语音

    本文主要详细讲解如何使用php语言,对mysql数据库进行查询.添加.删除.更新等操作. 工具/原料   Macromedia Dreamweaver 8 mysql数据库,php语言 一.前言   ...

  8. JDBC操作MySQL数据库案例

    JDBC操作MySQL数据库案例 import java.sql.Connection; import java.sql.DriverManager; import java.sql.Prepared ...

  9. shell脚本操作mysql数据库

    shell脚本操作mysql数据库,使用mysql的-e参数可以执行各种sql的(创建,删除,增,删,改.查)等各种操作 mysql  -hhostname -Pport -uusername -pp ...

随机推荐

  1. 【模板】Tarjan算法与有向图的强连通性

    概念 流图 给定一个有向图G= (V,E),若存在r∈V满足,满足从r出发能够到达V中所有的点,则称G是一个流图,记为(G,r),其中r是流图的源点. 流图的搜索树 在一个流图(G,r)上从r出发,进 ...

  2. ACM-SG函数之S-Nim——hdu1536 hdu1944 poj2960

    S-Nim Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  3. python 判断是否是润年及函数封装

    方法一, 从终端输入一个表示年份的整数,判断是否是闰年,是就打印xxx年是闰年,不是打印xxx年不是闰年 y = int(input('请输入一个年份:')) if (y % 4 == 0 and y ...

  4. c#将List转换成DataTable

    前面写了一篇List<T>转换成DataTable,这里主要是完善了前面的代码. 同样使用了emit,我把代码整理后上传了git. 另外增加了特性的设计. 设计了三类特性ColumnTyp ...

  5. RandomAccessFile类——高效快捷地读写文件

    RandomAceessFile类 RandomAccessFile类是一个专门读写文件的类,封装了基本的IO流,在读写文件内容方面比常规IO流更方便.更灵活.但也仅限于读写文件,无法像IO流一样,可 ...

  6. Web前端---HTTP协议

    目录 HTTP协议 一.http协议概述 二.http请求报文 1.GET请求 2.POST请求 三.http响应报文 1.响应报文内容 2.状态码(Status Code) HTTP协议 一.htt ...

  7. centos 7 配置nginx 的yum源

    在/etc/yum.repos.d里创建nginx.repo文件: touch nginx.repo vim nginx.repo 填写如下内容后保存 [nginx] name=nginx repo ...

  8. TensorFlow的前世和今生

    TensorFlow的前世和今生 TensorFlow是一个开放源码的软件库,用于跨一系列任务的数据流处理编程.TensorFlow是一个符号化的数学应用库,广泛用于机器学习,例如神经网络.在谷歌公司 ...

  9. 虚拟机系统ubuntu12.04(内网环境下的虚拟主机)开启远程连接访问

    一.工具准备: 1.内网虚拟机Ubuntu12.04系统主机一台,开放端口为:29999 2.远程连接软件:mobaxterm 二.开启步骤: 1.查看端口状态信息: netstat -antl | ...

  10. Idea项目中常见错误及笔记(Old)

    1.Idea基础设置: File-->settings--> 1>修改字体:Font 2>修改编码格式:File Encodings(全部UTF-8,右下方复选框勾中--防止程 ...