通过上一篇文章,对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介绍完毕,欢迎感兴趣的朋友和我交流。