简单了解Ado.net(下)

通过上一篇文章,对Ado.net有了基本的了解,今天来看另外两个类:SqlDataAdapter,DataTable。

SqlDataAdapter表示用于填充 System.Data.DataSet 和更新 SQL Server 数据库的一组数据命令和一个数据库连接。

DataTable 是在内存中开辟一块空间存储一个表,是属于程序的。

首先创建一个winForm程序,界面如下:

 

一个button控件和dataGridView控件。

下面先来看一下DataTable是怎样存储数据的。

首先先创建:DataTable dt = new DataTable();//定义成类字段,使每个方法都能使用

下面代码放到Form_Load中

dt.Columns.Add("id", typeof(int));//往dt中添加列,构建表结构,后面的参数需要转换为type类型

dt.Columns.Add("name", typeof(string));

dt.Columns.Add("sex", typeof(int));//性别有时候在数据库存储类型是Bit类型,0或1

dt.Columns.Add("age", typeof(int));

dt.Columns.Add("price", typeof(double));

dt.Columns.Add("quantity", typeof(int));

dt.Columns.Add("sum", typeof(double), "price*quantity");//后面可以跟表达式

dt.Columns.Add("性别", typeof(string), "IIF(sex=1,'男',IIF(sex=0,'女','人妖'))");//IIF函数与三目运算符类似,很少用

dt.Rows.Add(1, "张三", 1, 23, 35.5, 3);

dt.Rows.Add(1, "李四", 2, 23, 35.5, 3);

dataGridView1.DataSource = dt;//绑定数据

看一下执行结果:

 

dataGridView也可以绑定连接泛型集合、数组等。看一下它是怎么绑定集合的,首先创建一个类:

    class Person

    {

        public int ID

        {

            get;

            set;

        }

        public string Name

        {

            get;

            set;

        }

        public int Age

        {

            get;

            set;

        }

}

看一下怎样绑定

     Person per1 = new Person();

      per1.ID = 1;

      per1.Name = "张三";

      per1.Age = 23;

      Person per2 = new Person();

      per2.ID = 2;

      per2.Name = "李四";

      per2.Age = 25;

      List<Person> pers = new List<Person>();

      pers.Add(per1);

      pers.Add(per2);

      dataGridView1.DataSource = pers;

执行结果:

 

好了,看到这里,对DataTable、dataGridView有了基本的了解。

先来做SqlDataAdapter的查询

SqlDataAdapter da;//定义成类字段

string constring = "server=.;database=persondb;uid=sa;pwd=sa";//连接字符串,定义成类字段

下面的语句是放到Form_Load中

string sql = "select *from persons";

da = new SqlDataAdapter(sql, constring);//会自动连接数据库,并且内部实现了关闭连接

da.Fill(dt);//往表中填充数据及表结构

SqlCommandBuilder cmder = new SqlCommandBuilder(da);//自动生成单表命令,根据DataTable的行状态的更改与关联的 SQL Server 数据库的更改相协调

dataGridView1.DataSource = dt;

看一下执行结果:

 

我们来看到用SqlDataAdapter、DataTable得到的数据,是服务器一次性全部送过来的表。 而

SqlDataReader读数据时,服务器是根据dr的read()来送数据,每read()一次,服务器返回一行数据,返回来的数据放到一个object数组中。

接下来做增删改,相对于SqlConnection来说就很简单了

只在保存操作中写一行代码就足够了:

da.Update(dt);//为指定 DataTable中每个已插入、已更新或已删除的行调用相应的 INSERT、UPDATE 或 DELETE 语句。表中必须有主键

然后直接在dataGridView进行操作,下面看一下具体怎样操作

 

然后保存,

 

去数据库中看一下有没有添加成功

我们看到,”鬼脚七”成功添加。

再来修改,将“鬼脚七“改为”七匹狼“

然后保存,去数据库看一下有没有修改成功:

 

修改成功。

在删除它,点中这一行,按Del键删除,并保存,再到数据库看有没有删除成功:

 

删除成功。

到这里基本就把SqlDataAdapter、DataTable介绍完毕,欢迎感兴趣的朋友和我交流。

posted @ 2011-06-01 18:28  澐飞扬  阅读(1279)  评论(2编辑  收藏  举报