利用SqlDataAdapter更新数据表

作者:管理员 更新时间:2015-03-02 13:19
利用SqlDataAdapter更新数据表可以对一张表进行多个操作后,一次更新到数据库中。

代码如下: 
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["MyConnectString"].ConnectionString);

        string str = "select * from stu";//表必须要有主键
        conn.Open();
        SqlCommand cmd = new SqlCommand(str, conn);
        SqlDataAdapter Adapter = new SqlDataAdapter();
        Adapter.SelectCommand = cmd;    //

        DataSet DS = new DataSet();
        Adapter.Fill(DS, "table");    //得到数据集

        
        SqlCommandBuilder Mybuilder = new SqlCommandBuilder(Adapter);   //通过对SqlDataAdatper自动生成更新物理表的操作(microsoft的东西),不可少。这里参数必须用selectcommand对 象。
        /*Adapter.DeleteCommand = Mybuilder.GetDeleteCommand();
        Adapter.UpdateCommand = Mybuilder.GetUpdateCommand();
        Adapter.InsertCommand = Mybuilder.GetInsertCommand();*///这3句话在这里可以没有。
        

        string[] addNew ={"5","abc","123","H@H","123123123"};
        DataTable DT = DS.Tables["table"];
        DT.Rows.Add(addNew);//对数据集进行修改添加等操作。

        Adapter.Update(DS, "table");  //注意这里,"table"必须是DataSet中的内存表,而不是实际数据库中的物理表。否则会出现:无法找到 TableMapping['Table'] 或 DataTable“Table”的错误。
        conn.Close();

 =============

 注意:SqlCommandBuilder会根据“SqlCommandBuilder Mybuilder = new SqlCommandBuilder(Adapter)”里的

SqlDataAdapter 类型的Adapter参数自动往物理表里写东西,往哪个表写,就是根据这里来的。所以要操作的dataset与这里的SqlDataAdapter之间的关系就是:两者必须是同一张表。

来源:亦有软件
软件产品Eysln Software Product
亦有公告Eysln Notice
案例中心Eysln Template
知识库Eysln Knowledge Base
工具箱Eysln Toolkit Online