ADO.NET操作MySQL数据库

强烈推荐一个大神的人工智能的教程:http://www.captainai.net/zhanghan

前言

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

//创建command对象	 
 private MySqlCommand cmd = null;
//创建connection连接对象
 private MySqlConnection conn = null;

2.建立数据库连接

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

第二步:读取数据

1.command和DataReader对象读取数据

说明:

     DataReader对象对数据库检索数据提供只读的向前指针。DataReader是抽象类,不可以直接实例化,所以在使用前需要先创建Command对象,然后再创建DataReader对象,这种方式是只读的,所以不可以对其进行修改。

读取数据的过程:

    ①创建连接

    ②打开连接

    ③创建Command对象

    ④执行Command的ExecuteReader()方法

    ⑤将DataReader绑定到数据控件中

    ⑥关闭DataReader

    ⑦关闭连接

代码展示:

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中的数据,并且可以更新其中的数据。

读取数据的过程:

    ①创建连接

    ②创建DataAdapter对象

    ③创建DataSet对象

    ④执行DataAdapter对象的Fill()方法

    ⑤将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对象更新数据

//数据库连接字符串
            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;
            }

总结

     1.DataReader对象读取数据库中数据只能一条条读取,并且是只读的,不可以修改;Dataset与DataAdapter对象读取的数据可以读取且可以修改,DataSet中可以存放很多表。

       2.DataReader读取数据前需要手动写代码连接数据库,即conn.open(),查询完毕后需要手动写代码关闭数据库连接;DataSet与DataAdapter对象读取数据前不需要手动写代码连接数据库,会自动识别,若数据库连接没开,则开启,如果没有关闭,则自动关闭。

  • 12
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 50
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 50
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值