`
guoyiqi
  • 浏览: 964843 次
社区版块
存档分类
最新评论

SqlDataAdapter Update(转自:http://blog.csdn.net/dingjinze/archive/2008/11/26/3379743.aspx)

 
阅读更多

SqlDataAdapter可以更新任何一个数据表(DataTable dt),要进行这样的更新,我们首先要进行一些设置,如SqlDataAdapter的SqlCommand,包括UpdateCommand,DeleteCommand和InsertCommand,其实它们都是SqlCommand的一个实例,只是我们在执行更新的时候,会选择执行哪一个Command。用一个例子来说明一下,首先,定义一个SqlDataAdapter 的实例sda,然后我们定义一个SqlCommand 的实例scmd,以便绑定到sda的Command上去,定义完以后,对scmd进行一些初始化,这是最主要的地方,首先参数要写正确了scmd.Parameters.Add("@参数名:@parname",参数类型,参数长度,"对应的DataTable的Column"),这保证了DataTable中的数据可以写入数据库中去,然后我们定义CommandText,在这里面,我们可以引用我们已经定义好的参数@parname,例如我们可以写CommandText = "update table1 set column1 = @parname"如果我们定义的是进行更新操作的,那么我们就可以写scmd.CommandText = "update...";当然你也可以写删除或者插入语句,甚至你可以调用一个存储过程,只不过在更新的时候即使调用了这个更新命令,也只执行你的语句,这些都做好了以后,就把scmd绑定到sda上去,插入和删除命令也和更新命令一样进行设置后再绑定,然后当我们调用sda.Update(dt),这个时候,sda会根据你的dt里面的行的状态来调用相应的命令,它会对你表dt中行状态标记为Added的行执行插入操作,对标记为Modified执行更新操作,对标记为Deleted执行删除操作。在此过程中,要注意,它不是批量更新,而是逐行进行更新,也就是会对dt从第0行开始一直到最后一行,查找已经改变的行,然后执行相应的命令,当然有时候我们可能希望先执行完删除操作,再执行更新操作,最后执行插入操作,这时候我们要自己控制语句的顺序,也就是Update(dt.Select(...))

System.Data.SqlClient.SqlDataAdapter sda = new System.Data.SqlClient.SqlDataAdapter();//定义一个SqlDataAdapter 的实例

SqlCommand scmd = new SqlCommand();//定义一个SqlCommand的实例,以便绑定
scmd.CommandType = CommandType.Text;
scmd.Connection = new SqlConnection(ConnectionString);

scmd.Parameters.Add("@acc_title_id", SqlDbType.Int, 4, "acc_title_id");//重要的地方,将dt的列写到参数中去
scmd.Parameters.Add("@acc_std_title_id", SqlDbType.Int, 4, "acc_std_title_id");
scmd.Parameters.Add("@back_id", SqlDbType.Int, 4, "back_id");

scmd.CommandText = string.Format("update t_std_acc_title_ent_acc_title setacc_title_id=@acc_title_idwhere acc_std_title_id = @acc_std_title_id and acc_id = {0} andacc_title_id=@back_id", eleid);
sda.UpdateCommand = scmd;//更新语句

scmd = new SqlCommand();
scmd.CommandType = CommandType.Text;
scmd.Connection = new SqlConnection(ConnectionString);

scmd.Parameters.Add("@acc_title_id", SqlDbType.Int, 4, "acc_title_id");
scmd.Parameters.Add("@acc_std_title_id", SqlDbType.Int, 4, "acc_std_title_id");

scmd.CommandText = string.Format("insert into t_std_acc_title_ent_acc_title values(@acc_std_title_id,{0},@acc_title_id)",eleid);

sda.InsertCommand = scmd;//插入语句

sda.Update(dt.Select(null, null, DataViewRowState.ModifiedCurrent));//先执行更新

sda.Update(dt.Select(null, null, DataViewRowState.Added));//再执行插入

以上我们就进行了一个数据库的更新,它可以更新你任何一个表(内存中的DataTable),哪怕你这个表是在程序中创建的,数据不是从数据库中提取的也可以,以前没想好好研究,现在理解了写出来,也供有需要的朋友参考,如果有不正确的地方,也请多指教,谢谢^_*

分享到:
评论

相关推荐

    [Visual.Basic.2010.入门经典(第6版)].Thearon.Willi等.扫描版(1/2)

    扫描版(2/2)”可以下载另外一半 或者直接打开链接“http://download.csdn.net/detail/sfstream6/8240837” 目 录 第1 章 初识Visual Basic 2010 ............ 1 1.1 事件驱动编程 .........................

    Asp.Net分页控件【AspNetPager】拖入即用!

    这个分页控件名为AspNetPager控件,是Asp.net上使用率最高的分页控件,想怎么分就怎么分.附带'超详细代码注释",好用请给评论. 基本步骤: 1.拖拽控件(存放到到Bin目录下,再拖入工具箱) 2.粘贴复制(已放出实例源码) 3....

    SqlDataAdapter.Update批量更新.txt

    批量更新要更新的某一个或者几个字段字段,带回滚,效果很好,而且很多帖子没有讲清楚,要几个字段,就是取自己需要的字段,让一个不懂之人去自己摸索,还有是效率很高

    C#使用SqlDataAdapter.Update更新数据库

    C#使用SqlDataAdapter.Update更新数据库

    C#图书馆管理信息系统

    private System.Data.SqlClient.SqlDataAdapter sqlDataAdapter1; private System.Data.SqlClient.SqlCommand sqlSelectCommand1; private System.Data.SqlClient.SqlCommand sqlInsertCommand1; private ...

    asp.net基于XML的留言板

    asp.net基于XML的留言板 代码片段: protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { this.dlBind(); } } public void dlBind() { int curpage = Convert.ToInt32...

    简单新闻管理系统v适合.net初学者

    SqlDataAdapter da = new SqlDataAdapter(cmd); da.Fill(ds,"result"); GridView1.DataSource = ds.Tables["result"]; GridView1.DataBind(); } protected void GridView1_PageIndexChanging(object sender, ...

    c#连接数据库常用的语句

    private SqlDataAdapter CreateDataAdapter(string procName, SqlParameter[] prams) //将参数添加到SqlDataAdapter当中 { this.Open(); SqlDataAdapter dap = new SqlDataAdapter(procName, con); dap....

    .NET中实现客户端联动菜单 (无刷新)

    <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR"> <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema"> <SCRIPT language="javascript"> //城市-...

    asp.net连接数据库

    SqlDataAdapter objCommand= new SqlDataAdapter();//数据库命令 string strConnect;//定义数据库连接字符串 string strCommand=null;//定义数据库命令语句 // DataSet Dataset1 = new DataSet();//数据存放 //...

    基于ASP.NET(C#)的好友通讯录个人版

    SqlDataAdapter SqlData = new SqlDataAdapter(sqlstr, conn); //创建DataTabel DataTable dt = new DataTable(); //应用SqlDataAdapter对象的Fill方法填充数据集 SqlData.Fill(dt); //返回dt return dt; } ...

    C#教务系统

    SqlDataAdapter da;//数据适配器 public String getconn() //定义一个连接字符串的方法 { connstr = @"data source=.\SQLEXPRESS;initial catalog=sscggl;integrated security=true;"; return connstr; } ...

    MysqlDLL,C#操作MYSQL数据库

    注意: ExecuteNonQuery()方法主要用户更新数据,通常它使用Update,Insert,Delete语句来操作数据库,其方法返回值意义:对于 Update,Insert,Delete 语句 执行成功是返回值为该命令所影响的行数,如果影响的行数为0时...

    .Net分页控件【AspNetPager】拖入即用!

    SqlDataAdapter da = new SqlDataAdapter(sql, conn); DataSet ds = new DataSet(); da.Fill(ds, Pager1.PageSize * (Pager1.CurrentPageIndex - 1), Pager1.PageSize, "temptbl"); DataTable dt = ds.Tables[...

    SqlDataAdapter使用示例.

    SqlDataAdapter使用示例.rar

    求是源码下载整站程序v1.3(.net版)源码

    极大的优化了首页执行效率. article.aspx,softlist,sort_list.aspx页面读取数据均改有分页存储过程,有些由SqlDataReader读取较多数据均改为了SqlDataAdapter导入到DataSet里,减少与数据库连接时间,释放连接时...

    .net存取数据库二进制文件

    Imports System.IO Imports System.Data.SqlClient Public Class image Shared Sub Main() ... Dim tempAdapter As SqlDataAdapter Dim tempDataset As New DataSet '打开数据库连接

    DataGridview绑定

    //SqlDataAdapter sda = new SqlDataAdapter("select * from customers", connection); //DataSet ds = new DataSet(); //sda.Fill(ds); BindingSource bindingSource1 = new BindingSource(); connection.Open...

    C#编写的图书管理系统源代码

    da = new SqlDataAdapter(strSQL, myConnection); ds.Clear(); da.Fill(ds, "用户表"); //////动作 myTable = ds.Tables["用户表"]; for (int i = 0; i < myTable.Rows.Count; i++) { comboBox1.Items.Add...

    解决SqlDataAdapter数据适配器update delete insert出错

    解决SqlDataAdapter数据适配器update delete insert出错

Global site tag (gtag.js) - Google Analytics