前言

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. POJ3068 "Shortest" pair of paths

    嘟嘟嘟 题目大意:一个有向图,每一条边有一个边权,求从节点\(0\)到\(n - 1\)的两条不经过同一条边的路径,并且边权和最小. 费用流板子题. 发个博客证明一下我写了这题. #include&l ...

  2. 33、springboot整合springcloud

    Spring Cloud Spring Cloud是一个分布式的整体解决方案.Spring Cloud 为开发者提供了在分布式系统 (配置管理,服务发现,熔断,路由,微代理,控制总线,一次性token ...

  3. CentOS 安装jira 6.3.6

    java 目录: /usr/java/jdk1.6.0_45 tomcat 目录:/usr/tomcat-7.0.29 jira 目录: /usr/local/jira jira 访问地址: cent ...

  4. deque详解

    deque是double-ended queue的简称,deque和vector几乎上是一样的,使用的非常少,定义在<deque>头文件里: deque和vector的区别在于: 1)de ...

  5. ubuntu中phpstorm和sublime快速启动

    ubuntu gnome桌面 + dash to dock扩展 下载安装包手动安装phpstorm会遇到无法固定到dash上的情况(运行软件时在dash右击未出现Add to Favoriates) ...

  6. Vue 子组件调用父组件 $emit

    <!DOCTYPE html><html>    <head>        <meta charset="utf-8">      ...

  7. iOS 关闭图片渲染

    在为Button 设置背景图片的时候, 会发现显示的效果和UI给的图片不一样, 往往是把图片显示成为蓝色, 这是因为在新版的iOS中, 会自动对图片渲染. 我们只要把图片渲染关掉就OK了 - (UII ...

  8. nRF5 SDK for Mesh(八) Exploring Mesh APIs using light switch example,使用 灯开关 案例探索BLE mesh 的APIS

    Exploring Mesh APIs using light switch example The light switch example is meant to showcase the API ...

  9. iOS 类似微博或朋友圈的信息流

    1.先上图:   image.png   image.png 因为做过了好几次这样的需求,所以这次想到把它拿出来,下次再需要做的时候直接拿过来改改就能用了,节约时间. 2.功能 文字收起和展开,行高自 ...

  10. Read a large file with python

    python读取大文件 较pythonic的方法,使用with结构 文件可以自动关闭 异常可以在with块内处理 with open(filename, 'rb') as f: for line in ...