CommandBuilder 原来有这样一个作用(转)

 

CommandBuilder 原来有这样一个作用

 

下午我在学习使用用 DataAdapter 和 DataSet 对象使用更新一个SQL数据库的表的时候,系统总是提示 “当传递具有新行的 DataRow 集合时,更新要求有效的 InsertCommand。”后来才知道,原来:

DataAdapter 对象在数据发生变化的时候,并不能自动产生数据库系统所需要的 Transact-SQL 语句,如果不使用 CommandBuilder 而使用 Update 方法,这是不会成功的。而 CommandBuilder 对象能为单个表的数据改变自动产生 Transact-SQL 语句。


        Try

            ' 连接字串和SQL语句;
            Dim strConnectionString As String = "database=tempdb;user id=sa;pwd=sa;server=localhost"
            Dim strSQLCommand As String = "select * from myTempTable"

            ' 创建数据连接;
            Dim conDataConnection As New SqlConnection
            conDataConnection.ConnectionString = strConnectionString
            conDataConnection.Open()

            ' 创建 SQLCommand;
            Dim cmdSQLCommand As New SqlCommand(strSQLCommand, conDataConnection)

            ' 创建 DataAdapter;
            Dim daDataAdapter As New SqlDataAdapter(strSQLCommand, conDataConnection)

            ' 创建 CommandBuilder;
            Dim cb As New SqlCommandBuilder(daDataAdapter)

            ' 创建 DataSet;
            Dim dsDataSet As New DataSet

            daDataAdapter.Fill(dsDataSet, "myTempTable")

            ' 创建新行;
            Dim drDataRow As DataRow
            drDataRow = dsDataSet.Tables("myTempTable").NewRow()
            drDataRow.Item("Field1") = 987
            drDataRow.Item("Field2") = "789"

            ' 插入;
            dsDataSet.Tables("myTempTable").Rows.Add(drDataRow)

            ' 更新;
            daDataAdapter.Update(dsDataSet, "myTempTable")

            ' 绑定, 显示;
            DataGrid1.DataSource = dsDataSet.Tables("myTempTable").DefaultView
            DataGrid1.DataBind()

        Catch ex As Exception
            Response.Write(Err.Description)

        End Try

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值