9.9 SqlDataAdapter对象
在前面已经提到,向DataSet对象中填充数据时需要使用DataAdapter对象。DataAdapter对象是一个适配器,它表示一组操作数据的命令和一个数据库连接。该对象充当数据库和DataSet之间的桥梁,用以协调双方数据同步。
9.9.1 创建SqlDataAdapter对象
与创建其他对象的方法一样,可以通过new实例化SqlDataAdapter对象。它有4种构造函数,形式如下。
SqlDataAdapter da = new SqlDataAdapter(); SqlDataAdapter da = new SqlDataAdapter(SqlCommand selectCommandText); SqlDataAdapter da = new SqlDataAdapter(String selectCommandText, SqlConnection selectCommand); SqlDataAdapter da = new SqlDataAdapter(String selectCommandText, String selectConnectionString);
其中,第一行表示初始化SqlDataAdapter类的实例;第二行表示创建该类的实例,用指定的SqlCommand作为SelectCommand的属性;第三行使用SelectCommand和SqlConnection对象初始化一个SqlDataAdapter类的实例;最后一行用SelectCommand和一个连接字符串初始化SqlDataAdapter类的实例。
9.9.2 SqlDataAdapter对象更新数据
SqlDataAdapter对象提供多个属性,创建对象完毕后可以使用这些属性。如表9-10所示列举了SqlDataAdapter对象的常用属性。
表9-10 SqlDataAdapter对象的常用属性
提示
除表9-10中列出的属性外,SqlDataAdapter还提供方法,其中Update()方法和Fill()方法最为常用。Update()方法为DataSet中每个已插入、已更新或者已删除的行调用相应的INSERT、UPDATE或者DELETE语句;Fille()方法填充数据到DataSet或者DataTable中。
【范例12】
开发者可以通过SqlDataAdapter对象的Update()方法实现更新,通过这种方式实现更新有三种情况:即SqlCommandBuilder自动生成更新;使用配置数据源方式更新;手动编写命令。下面通过SqlCommandBuilder实现更新的代码,并将更新后的结果显示到GridView控件中。代码如下。
protected void Page_Load(object sender, EventArgs e) { string constr = "Data Source=SJB; Initial Catalog= UserRegister; User ID=sa; Pwd = 123456"; SqlConnection conn = new SqlConnection(constr); SqlCommand selectCMD = new SqlCommand("SELECT TOP 0 UserName, UserPass, UserMail, UserBirth FROM UserInfo", conn); DataTable dt = new DataTable(); SqlDataAdapter sda = new SqlDataAdapter(selectCMD); sda.Fill(dt); for (int i = 1; i <= 10; i++) //给DataTable添加10条记录 dt.Rows.Add(new object[] { "Name" + i, "Name" + i, i + "@163.com", "1990-10-10" }); SqlCommandBuilder scb = new SqlCommandBuilder(sda); sda.Update(dt.GetChanges()); //执行更新 dt.AcceptChanges(); //使DataTable保存更新 gvShow.DataSource = dt; gvShow.DataBind(); }
在上述代码中,创建SqlCommand对象时设置SELECT查询命令,SqlCommand Builder要求至少有SELECT命令。而SELECT TOP 0不是为了查询出数据,是要查询出表结构以向DataTable中填充表结构。
运行上述代码所在的页面查看效果,如图9-5所示。
图9-5 SqlDataAdapter对象更新数据
共有条评论 网友评论