我正在编写狗收养表格。它从Access DB检索数据,然后用户可以采用最多三只狗,每只狗在3个不同的字段中指定。我这样做是因为我之前尝试过使用数组,但没有运气。
问题出在这里(以粗体突出显示):
Try
Dim conexion As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\PerrosDB.mdb;")
conexion.Open()
Dim cmd As New OleDb.OleDbCommand
cmd.Connection = conexion
cmd.CommandType = CommandType.Text
cmd.CommandText = "select adopcion1, adopcion2, adopcion3 from usuarios where codigo_usuario = " & FormPrincipal.codigo_usuario & ""
Dim dr As OleDb.OleDbDataReader
dr = cmd.ExecuteReader
While dr.Read()
**If dr.IsDBNull(1) Then
posicionAdopcion = 1
ElseIf dr.IsDBNull(2) Then
posicionAdopcion = 2
ElseIf dr.IsDBNull(3) Then
posicionAdopcion = 3
Else
MsgBox("Lo sentimos, solo puedes hacer un máximo de 3 adopciones")
Exit Sub**
End If
End While
dr.Close()
conexion.Close()
Catch ex As Exception
MsgBox(ex.Message & "Saliendo de la aplicación.")
Me.Close()
End Try
和
Try
Dim conexion As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\PerrosDB.mdb;")
conexion.Open()
Dim cmd As New OleDb.OleDbCommand
cmd.Connection = conexion
cmd.CommandType = CommandType.Text
**If (posicionAdopcion = 1) Then
cmd.CommandText = "UPDATE USUARIOS SET ADOPCION1 = '" & nombrePerro & "' WHERE codigo_usuario = " & FormPrincipal.codigo_usuario & ""
ElseIf (posicionAdopcion = 2) Then
cmd.CommandText = "UPDATE USUARIOS SET ADOPCION2 = '" & nombrePerro & "' WHERE codigo_usuario = " & FormPrincipal.codigo_usuario & ""
ElseIf (posicionAdopcion = 3) Then
cmd.CommandText = "UPDATE USUARIOS SET ADOPCION3 = '" & nombrePerro & "' WHERE codigo_usuario = " & FormPrincipal.codigo_usuario & ""
End If**
cmd.ExecuteNonQuery()
conexion.Close()
Catch ex As Exception
MsgBox(ex.Message & "Saliendo de la aplicación...")
Me.Close()
End Try
我想要做的是检查采用字段(adopcion1,adopcion2,adopcion3)是否为空,如果是,则将狗的名字放在那里。如果不是,请检查下一个空闲时段。如果没有,请打印相应的错误消息。但是程序的作用是覆盖adopcion1(第一个字段),无论如何。
我已经检查了this帖子,我可能会遇到类似的问题,误解了isDBNull的用法,但到目前为止,我试图按照它所说的那样做,没有结果。
我做错了什么?
答案 0 :(得分:0)
我明白了,因为我预计这是一个愚蠢的错误:我从1中检索第一个数据字段,而不是从0中检索。因此完全跳过它:
If dr.isDBNull(0) Then
posicionAdopcion = 1
但是,是的,代码看起来很笨重,不知道SQL参数,会尽快检查它们。
感谢您的帮助!