because you changed dscA.SelectCommand.CommandText!use a separate OleDbDataAdapter for each SELECT or change it back to  "Select * From Members"

解决方案 »

  1.   

    actually, it is not that simple, assume your table has a primary key (if not, add one):       Dim strComStr As String = "Select * From Members"        Dim dscA As OleDbDataAdapter = New OleDbDataAdapter(strComStr, strConStr)        Dim dsDataSet As DataSet = New DataSet
            dscA.Fill(dsDataSet, "members")        dscA.SelectCommand.CommandText = "select * from orders"
            dscA.Fill(dsDataSet, "orders")        dsDataSet.Tables("members").Rows(0)("userid") = TextBox1.Text
            dsDataSet.Tables("members").Rows(0)("userpassword") = TextBox2.Text
            dscA.SelectCommand.CommandText = strComStr         Dim cb as new OleDbCommandBuilder(dscA)
            dscA.Update(dsDataSet, "members") '***有问题
      

  2.   

    从DataSet取Tables和Rows用的是方括号吧,圆括号也可以吗?
      

  3.   

    请问saucer(思归, MS .NET MVP) 
    你在最后面的加的
    Dim cb as new OleDbCommandBuilder(dscA)是什么用意?
      

  4.   

    请问saucer(思归, MS .NET MVP) 我把程序改为如下,还是老样子Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click        Dim strConStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\程序\ASP.net网页\putin\MyWeb.mdb"
            Dim strComStr As String = "Select * From Members"        Dim dscA As OleDbDataAdapter = New OleDbDataAdapter(strComStr, strConStr)
            Dim dsDataSet As DataSet = New DataSet
            dscA.Fill(dsDataSet, "members")
           
            dsDataSet.Tables("members").Rows(0)("userid") = TextBox1.Text
            dsDataSet.Tables("members").Rows(0)("userpassword") = TextBox2.Text        dscA.SelectCommand.CommandText = strComStr 
            
            dscA.Update(dsDataSet, "members")    End Sub还是老样子
    只有加了Dim cb as new OleDbCommandBuilder(dscA)这句才行
    请问这句是什么用意?
      

  5.   

    to update the database, you need the relevant UpdateCommand (or DeleteCommand or InsertCommand) in OleDbDataAdapter, if you use OleDbCommandBuilder, it creates the necessary UpdateCommand for you, otherwise, you have to manually create them yourself
      

  6.   

    Dim cb as new OleDbCommandBuilder(dscA);
    这句话就是对于OleDbDataAdapter自动更新的语句,
    如果像一上来搂住所写的程序,虽然DataSet已经改变了,
    不过光调用Update还是不行,要使数据库随着DataSet的变化而更新,
    其实就是两种方法,一种就是思归所用的OleDbCommandBuilder——自动更新的方法,
    不过这种方法对于单表的更新用起来还是很方便的,
    不过它有很大的局限性,不能对于多张表进行操作,也不能调用存储过程。
    第二种方法就是,手动更新数据库。由于此种方法对于此贴中的数据库操作并非必需的,所以这里也就点到为止了。
      

  7.   

    请问sgsh51
    你在回复中所说的第二种方式复杂吗?
    请问在此程序中如何实现?
    谢谢