代码:
  定义一个过程,将数据库中符合指定条件的记录的name改为在文本框输入的内容。
    Sub update()
        Dim conn As New SqlConnection(ConfigurationSettings.AppSettings("cns"))
        Dim cmdstr As String
        Dim cmd As SqlCommand
        Dim adp As SqlDataAdapter
        Dim ds As DataSet
        cmdstr = "select * from newsarticle where id=" & ddl.SelectedValue
        cmd = New SqlCommand(cmdstr, conn)
        adp = New SqlDataAdapter
        adp.SelectCommand = cmd
        ds = New DataSet
        adp.Fill(ds, "na")
        Dim tb As New DataTable
        Dim tr As DataRow
        tb=ds.tables("na")
        For Each tr In tb.Rows
            tr("name") =t1.text
        Next        
    End Sub
尝试以下几个方法都不能保存记录,
        tb.AcceptChanges()
        adp.AcceptChangesDuringFill
        adp.AcceptChangesDuringUpdate
        adp.Update(ds)
请问如何将修改后的记录保存在数据库中?请高手指点。

解决方案 »

  1.   

    你这个也搞的太麻烦了吧,给你个简单的例子:
      Sub update()
            Dim conn As New SqlConnection(ConfigurationSettings.AppSettings("cns"))
            Dim cmdstr As String
            cmdstr="update newsarticle set name='"+t1.text+"' where name='"+ddl.SelectedValue+"'"
            Dim cmd As SqlCommand=New SqlCommand(cmdstr, conn)
            cmd.executeNonQuery()
            conn.close()   end sub
      

  2.   

    adp.Update(ds)
    靠的就是datarow的标记来更新,acceptchanges后,标记都被抹去了
      

  3.   

    我是楼主,可能我的意思没表达清楚,总之是遍历多条记录,更改其中的值,并保存,是针对多记录的操作,而不是只用SQL语句中的UPDATE更新其中一条记录。
      

  4.   

    结贴了,最后发现热心的英俊的潇洒的才华横溢原来就是我自己啊(^!^)。
        其实很简单,在微软站点上有例程。
    Sub update()
            Dim conn As New SqlConnection(ConfigurationSettings.AppSettings("cns"))
            Dim cmdstr As String
            Dim cmd As SqlCommand
            Dim adp As SqlDataAdapter
        Dim cb As New SqlCommandBuilder(adp)'以前缺少这一步
            Dim ds As DataSet
            cmdstr = "select * from newsarticle"
            cmd = New SqlCommand(cmdstr, conn)
            adp = New SqlDataAdapter
            adp.SelectCommand = cmd
            ds = New DataSet
            adp.Fill(ds, "na")
            Dim tb As New DataTable
            Dim tr As DataRow
            tb=ds.tables("na")
            For Each tr In tb.Rows
                tr("name") =t1.text
            Next
      adp.Update(ds.Tables("tb"))    
      con.Close()
        End Sub