zoukankan      html  css  js  c++  java
  • ADO.NET操作MySQL数据库

    前言

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

    [csharp] view plain copy
     
    1. //创建command对象      
    2.  private MySqlCommand cmd = null;  
    3. //创建connection连接对象  
    4.  private MySqlConnection conn = null;  

    2.建立数据库连接

    [csharp] view plain copy
     
    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
        ⑦关闭连接
    代码展示:
    [csharp] view plain copy
     
    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. }  
    [csharp] view plain copy
     
    1.   
    
    
    
    

    2.DataSet和DataAdapter对象读取数据

    说明:
         DataAdapter是DataSet与数据库之间的媒介,DataAdapter打开一个连接并执行相应的mysql语句,DataSet相当于一个小型的数据库,可以存储很多个表,DataSet是一个集合对象,我们可以读取DataSet中的数据,并且可以更新其中的数据。
    读取数据的过程:
        ①创建连接
        ②创建DataAdapter对象
        ③创建DataSet对象
        ④执行DataAdapter对象的Fill()方法
        ⑤将DataSet中的表绑定到数据控件中
    代码展示:
    [csharp] view plain copy
     
    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.   
    8.        //使用SqlDataAdapter的Fill方法填充DataSet mysda.Fill(ds, "comment");  
    9.        //将DataSet中的表绑定到数据控件中  
    10.        BindingSource bs;  
    11.        bs = new BindingSource();   
    12.        bs.DataSource = ds.Tables["comment"];   
    13.        dataGridView1.DataSource = bs;  
    14.    }  
    15.    catch (Exception) {   
    16.        throw;   
    17.    }  
    [csharp] view plain copy
     
    1.   
    
    
    
    

    第三步:更新数据

    1.command对象更新数据

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

    2.DataAdapter对象更新数据

    [csharp] view plain copy
     
    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.              
    6.             try  
    7.             {              
    8.                 //comment是表名,quantity是字段名  
    9.                 string mysqlText = "select * from comment;";  
    10.                 MySqlDataAdapter mysda = new MySqlDataAdapter(mysqlText, conn);  
    11.                 DataSet ds = new DataSet();  
    12.                 mysda.Fill(ds, "comment");  
    13.                 //绑定MySqlDataAdapter对象,自动生成从DataSet更新MySql的命令  
    14.                 MySqlCommandBuilder cb = new MySqlCommandBuilder(mysda);    
    15.                 //更新ds中的数据  
    16.                 ds.Tables["comment"].Rows[0]["quantity"] = 111;  
    17.                 //更新数据库中的数据  
    18.                 mysda.Update(ds, "comment");  
    19.                   
    20.             }  
    21.             catch (Exception)  
    22.             {  
    23.                 throw;  
    24.             }</span>  

    总结

         1.DataReader对象读取数据库中数据只能一条条读取,并且是只读的,不可以修改;Dataset与DataAdapter对象读取的数据可以读取且可以修改,DataSet中可以存放很多表。
           2.DataReader读取数据前需要手动写代码连接数据库,即conn.open(),查询完毕后需要手动写代码关闭数据库连接;DataSet与DataAdapter对象读取数据前不需要手动写代码连接数据库,会自动识别,若数据库连接没开,则开启,如果没有关闭,则自动关闭。
  • 相关阅读:
    接口性能测试方案
    如何选择自动化测试框架
    一维和二维前缀和
    高精度 加减乘除
    归并排序 快速排序
    链表
    二分查找
    表达式求值
    c++ const问题小记
    虚继承总结
  • 原文地址:https://www.cnblogs.com/jackytang/p/9077908.html
Copyright © 2011-2022 走看看