使用SqlDataAdapter对象向DataSet对象中填充数据
步骤:
- 创建SqlConnection对象
- 创建要执行的SQL语句
- 利用SQL语句和SqlConnection对象,创建SqlDataAdapter对象
- 打开数据库连接并且调用SqlDataAdapter对象的Fill()方法填充DataSet
- 关闭数据库的连接
1.步骤一:创建SqlConnection对象
string connstr = “连接字符串”;
SqlConnection conn = new SqlConnection(connstr);
conn.Open();
2.步骤二:创建要执行的SQL语句
string sql = "sql语句";//常用sql语句包括select、insert、update、delete
3.步骤三:创建SqlDataAdapter对象
SqlConnection conn = new SqlConnection(connstr);
string sql = "select username as 用户名, pass as 密码, email as 电子邮件, tel as 电话号码 from register";
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
4.步骤四:调用SqlDataAdapter对象的Fill()方法填充DataSet
DataSet ds = new DataSet();
da.Fill(ds,“reguser”);//reguser为表的名字
5.步骤五:关闭数据库的连接
conn.Close();
1.DataSet对象的创建方法:
DataSet ds=new DataSet(); //未指定创建时的参数
DataSet ds=new DataSet("Customer"); //指定创建时的参数,即指定了数据集的名称字符串
2.DataSet对象的属性
- DataSet对象中可以包含一个或多个DataTable
- 每个DataTable可以包含对应DataRow集合对象的Rows属性、对应DataColumn集合对象的Columns属性以及对应约束对象集合的Constraints属性
- DataSet对象还包含DataRelation集合的Relations属性
1.SqlDataAdapter对象的属性
- SelectCommand: 从数据源中检索数据
- InsertCommand:从DataSet中把插入的记录写入数据库的操作
- DeleteCommand:使用运行在DataSet对象上的数据删除数据库中的数据
- UpdateCommand:使用运行在DataSet对象上的更新命令完成对数据库的操作
2.SqlDataAdapter对象的方法
- Fill:填充数据集DataSet或DataTable
- Update:将DataSet或DataTable中的修改更新到数据库中
3.SqlDataAdapter的构造方法
- SqlDataAdapter() :无参,直接创建对象
- SqlDataAdapter(sqlcommand,conn):用指定的参数构造SqlDataAdapter
注意:
- 如果断开服务器的连接,使用DataSet和SqlDataAdapter对象可以在短时间内对大量的数据进行查询操作
- DataSet对象可以在断开数据库连接的情况下查询数据,SqlDataAdapter对象可以解决数据库和DataSet之间数据的同步问题
- SqlDataAdapter是DataSet和SQL Server之间的桥接器,用于检索和保存数据
- SqlDataAdapter对象的Fill方法用于将查询结果填充到DataSet或DataTable中,以方便脱机处理数据
实例:读取数据表内容,将信息显示到GridView控件中,并实现更新功能
控件:button控件、DataGridView控件
代码:
SqlDataAdapter sda;
DataSet ds;
private void btnShow_Click(object sender, EventArgs e)//显示查询数据的表格
{
string connstr = "data source=.;database=student;uid=sa;pwd=123456";
SqlConnection conn = new SqlConnection(connstr);
string sql = "select snum as 学号,sname as 姓名,ssex as 性别,sage as 年龄 from sinfo";
sda = new SqlDataAdapter(sql,conn);//创建数据适配对象
ds =new DataSet();//创建数据集对象
sda.Fill(ds);//将查询结果填充到数据集
conn.Close();
dgvInfo.DataSource = ds.Tables[0];//将ds中第一张表,设成数据网格视图的数据源
}
private void btnUpdate_Click(object sender, EventArgs e)//更新
{
SqlCommandBuilder builder = new SqlCommandBuilder(sda);
sda.Update(ds);
}
更新功能注意:
- 对DataSet的修改,可以使用SqlCommandBuilder通过Update自动更新到数据库
- 在使用update方法前,要设置相应的命令,包括insert,update、delete等,但也可以使用SqlComandBuilder对象来自动生成更新所需要的相关命令
- 简化操作:
SqlCommandBuilder builder=new SqlCommandBuilder(已创建的SqlDataAdapter对象);
SqlDataAdapter对象.Update(数据集对象,“数据表名称”); //将DataSet的数据提交到数据源
- 要想使SqlCommandBuilder起作用,必须注意两点:
- 数据表中必须设置主键
- 一开始创建SqlDataAdapter的那个sql语句必须包括主键的列,否则会出现“对于不返回任何键列信息的 SelectCommand 不支持 UpdateCommand 的动态 SQL”的错误提示
DataGridView控件
1.属性:
- DataSource:设置DataGridView的数据源
- DataMember:设置DataGridView显示DataSource的子列表
- AllowUserToAddRows:设置是否允许添加行
2.该控件用于绑定时,常用到DataSource和DataMember属性,即下面两种绑定代码都是可以的:
dataGridView1.DataSource = ds.Tables ["reguser"] ; //设置数据网格的数据源为ds的reguser表
dataGridView1.DataSource=dt;