myset中根本不存在USERNAME的表,看来你对ADO.NET不是很...

解决方案 »

  1.   

    Dim mytable As New DataTable()        myadapter = New SqlClient.SqlDataAdapter(cmd)
            myadapter.Fill(myset, "login")
            //mytable = myset.Tables("USERNAME") //错
            myrow = mytable.NewRow()        myrow("USERNAME") = "aaa"
            myrow("USERPASSWORD") = "aa"        mytable.Rows.Add(myrow)
            // 在此将mytable加到myset中
            myadapter.Update(myset)
      

  2.   

    惭愧,惭愧,是我写错了,应该是
    mytable = myset.Tables("login")
      

  3.   

    我把代码改过来了:
            Dim myrow As DataRow
            Dim mytable As New DataTable()        myadapter = New SqlClient.SqlDataAdapter(cmd)
            myadapter.Fill(myset, "login")
            mytable = myset.Tables("login")
            myrow = mytable.NewRow()        myrow("USERNAME") = "aaa"
            myrow("USERPASSWORD") = "aa"        mytable.Rows.Add(myrow)
            myadapter.Update(myset,"login")依然报错:当传递具有新行的 DataRow 集合时,更新要求有效的 InsertCommand。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.InvalidOperationException: 当传递具有新行的 DataRow 集合时,更新要求有效的 InsertCommand。源错误: 
    行 47:         myrow("USERPASSWORD") = "100"
    行 48:         mytable.Rows.Add(myrow)
    行 49:         myadapter.Update(myset, "login")  “现在是这里错了!”
    行 50:         dgtest.DataSource = myset
    行 51:         dgtest.DataBind()
     
      

  4.   

    加入如下一句:
    dim combuilder as SqlClient.SqlCommandBuilder=new SqlClient.SqlCommandBuilder(myadapter)