该例中使用 CommandBuilder 自动生成 SQL 语句,若要为 DataAdapter 自动生成 SQL 语句,首先设置 DataAdapter 的 SelectCommand 属性,然后,创建一个 CommandBuilder 对象并以参数形式指定CommandBuilder 将为其自动生成 SQL 语句的 DataAdapter。
具体实现步骤:
1. 仍在项目WebCourse中,在chapter8文件夹中,添加一个Web窗体:useDataAdapter.aspx。
2. 在useDataSet.aspx.cs文件的头部,添加要用到的命名空间:
using System.Data.SqlClient;
3. 在useDataSet.aspx.cs文件的Page_Load事件处理程序中添加如下代码:
//1使用Connection对象连接数据库
string connStr="server=localhost;uid=sa;pwd=sa;database=myWebDB";
SqlConnection myConnection = new SqlConnection(connStr);
//2创建访问数据表的DataAdapter对象
string queryStr="select * from information";
SqlDataAdapter myDataAdapter=new SqlDataAdapter(queryStr,myConnection);
//3使用DataSet对象存放数据表
DataSet myDataSet=new DataSet();
myDataAdapter.Fill(myDataSet,"information");
Cleanup();//清除上一次插入的记录
//在数据集中插入一条新记录
SqlCommandBuilder mySqlCommandBuilder =
new SqlCommandBuilder(myDataAdapter); //使用 CommandBuilder 自动生成 SQL 语句
DataRow myDataRow = myDataSet.Tables["information"].NewRow();
myDataRow["title"] ="新title";
myDataRow["author"]="新author";
myDataRow["content"] = "新content";
myDataRow["datetime"] = System.DateTime.Now;
myDataSet.Tables["information"].Rows.Add(myDataRow);
myDataAdapter.Update(myDataSet, "information");
Response.Write("已经完成更新!");
4. 在useDataSet.aspx.cs文件中添加自定义函数Cleanup()
string connStr="server=localhost;uid=sa;pwd=sa;database=myWebDB";
SqlConnection myConnection = new SqlConnection(connStr);
myConnection.Open();
string delStr="DELETE FROM information WHERE title = '新title'";
SqlCommand myCommand = new SqlCommand(delStr, myConnection);
myCommand.ExecuteNonQuery();
myConnection.Close();