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

  • 相关阅读:
    算法笔记 --- Selection Sort
    算法笔记 --- Radix Sort
    算法笔记 --- Quick Sort
    算法笔记 --- Merge Sort
    算法笔记 --- Insertion Sort
    算法笔记 --- Heap Sort
    算法笔记 --- Counting Sort
    算法笔记 --- Bubble Sort
    算法笔记 --- Tree Travers
    javaweb_JDBC
  • 原文地址:https://www.cnblogs.com/xypbk/p/8004155.html
Copyright © 2011-2022 走看看