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

 

posted @ 2017-12-08 10:15  谢牧谚  阅读(6033)  评论(0编辑  收藏  举报