对象引用未设置为VB中的对象实例

时间:2014-01-07 23:40:31

标签: database vb.net ms-access registration

我尝试注册一个帐户,但所有内容都是对象引用未设置为dsNewRow = ds.Tables("Username").NewRow()部分的对象实例。

这是代码清单。

    ElseIf inc <> -1 Then

        If Not ExistAccount(txtUsername.Text, txtPassword.Text) Then

            Dim cb As New OleDb.OleDbCommandBuilder(da)

            Dim dsNewRow As DataRow

            dsNewRow = ds.Tables("Username").NewRow()

            dsNewRow.Item(1) = txtUsername.Text
            dsNewRow.Item(2) = txtPassword.Text

            ds.Tables("Username").Rows.Add(dsNewRow)

            da.Update(ds, "Username")
            txtUsername.Clear()
            txtPassword.Clear()

            MsgBox("Your account has been created.")

        End If

    End If

End Sub

3 个答案:

答案 0 :(得分:0)

如果您收到错误,则ds.Tables("Username")不存在,因此在空DataTable上调用新行将导致异常。在调用DataTabe方法之前,请检查以确保NewRow()“用户名”不为空。

类似的东西(这只是一个想法)

Dim dsNewRow As DataRow

If ds.Tables("Username") Is Nothing Then
    Dim dt As DataTable = New DataTable
    dt.Columns.Add("Username", GetType(String))
    dt.Columns.Add("Password", GetType(String))

    ds.Tables.Add(dt)

End If

dsNewRow = ds.Tables("Username").NewRow()

现在关于创建新表的整个部分是可选的,如果表格不存在,那么这就是你想要的方向。再一点主要是改变是“用户名”表不存在。

干杯。

答案 1 :(得分:0)

由于DataRow类型是一个对象,您可以尝试

     SET  dsNewRow = ds.Tables("Username").NewRow()

答案 2 :(得分:-1)

您必须使用New关键字将数据行实例化为:

Dim dsNewRow As New DataRow