我尝试注册一个帐户,但所有内容都是对象引用未设置为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
答案 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