强烈推荐一个大神的人工智能的教程: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对象读取数据前不需要手动写代码连接数据库,会自动识别,若数据库连接没开,则开启,如果没有关闭,则自动关闭。