myconn = New SqlConnection("server=localhost;database=database;uid=sa;pwd=sa")
        myadapter = New SqlDataAdapter(sqlstr, myconn)
        ds = New DataSet
        myadapter.Fill(ds) Dim sqlstr As String
        Dim ds As DataSet
        ds = New DataSet
        If pwdstr = "" Then
            sqlstr = "select * from register where id='" + userstr.Trim + "' and rkey is null"
        Else
            sqlstr = "select * from register where id='" + userstr.Trim + "' and rkey='" + pwdstr + "'"
        End If
        fill(sqlstr)
        If ds.Tables(0).Rows.Count = 0 Then
            close()
            Return -1
        End If
        ds.Clear()
        close()
        Return 1

解决方案 »

  1.   

    ~~~~(>_<)~~~~ 有谁知道哪里错了~我是新手~很多不懂的地方请多多包涵~
      

  2.   

    你检查下Fill方法填充的数据集ds,可能和后来判断ds.Table(0)的ds不是同一个。也就是说你给ds Fill后,又给它改写过它了,比如重新new了一个,所以里面又变成空的。
      

  3.   

    真的诶~我多写了一行~
    可是又有新的问题~ 
    运行显示:未将对象引用设置到对象的实例。  If ds.Tables(0).Rows.Count = 0 Then 报错!
    这又是为什么~
      

  4.   

    因为你定义的ds都是局部变量,两个方法里的ds互不相关。需要把ds做为方法参数传递,或者定义ds为类的成员
      

  5.   

    成员字段:Dim ds As DataSet
    成员方法A:
    myconn = New SqlConnection("server=localhost;database=database;uid=sa;pwd=sa")
      myadapter = New SqlDataAdapter(sqlstr, myconn)
      ds = New DataSet
      myadapter.Fill(ds)成员方法B:
     Dim sqlstr As String
      If pwdstr = "" Then
      sqlstr = "select * from register where id='" + userstr.Trim + "' and rkey is null"
      Else
      sqlstr = "select * from register where id='" + userstr.Trim + "' and rkey='" + pwdstr + "'"
      End If
      fill(sqlstr)
      If ds.Tables(0).Rows.Count = 0 Then
      close()
      Return -1
      End If
      ds.Clear()
      close()
      Return 1
      

  6.   

    哦~我明白你的意思~我把ds变量改为全局变量了~
    O(∩_∩)O哈哈~对了~~
    非常非常非常的感谢你~