Visual Basic.NET - Error con variable SqlDataReader

 
Vista:
Imágen de perfil de Roy

Error con variable SqlDataReader

Publicado por Roy (2 intervenciones) el 11/10/2022 07:08:49
Hola
Un amigo y yo estamos aprendiendo acerca del lenguaje y somos un poco novatos
En esta parte del programa la variable "dr", se supone que tiene que hacer una consulta con la funcion "consultarpersona" pero salta el siguiente error:


imagen_2022-10-10_230420152



imagen_2022-10-10_230452117

Comparto el código del modulo y del botón.

Modulo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Imports System.Data.Sql
Imports System.Data.SqlClient
Module Conexion
    Public conx As New SqlConnection("Data Source=DANIELITO;Integrated Security=TRUE;Initial Catalog=Datos SET")
    Public cmd As New SqlCommand 'permite ejecutar un procedimiento'
    Public dr As SqlDataReader  'permite el modo de lectura'
    Public sql As String = "" 'variable'
 
 
    Public Sub conectarse()
        Try
            conx.Open()
            MsgBox("CONEXION EXITOSA")
        Catch ex As Exception
            MsgBox("FALLO LA CONEXION")
        End Try
 
    End Sub
 
    Public Sub consultarpersona(ByRef identificacion As String) 'recibe la cedula y la utiliza como identificacion
 
        cmd.Connection = conx ' establece la conexión
        cmd.CommandType = CommandType.Text ' Establece un valor
        cmd.CommandText = "SELECT CEDULA, NOMBRES, APELLIDOS, EDAD, TELEFONO, CORREO, SECCION FROM DATOS WHERE CEDULA=" & identificacion 'establece la busqueda en la funcion de los datos que se van ejecutar
        Try
            dr = cmd.ExecuteReader() 'Empieza a leer
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Sub
End Module


Botón
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Private Sub Btn_Buscarp1_Click(sender As Object, e As EventArgs) Handles Btn_Buscarp1.Click
        If Me.Txt_Cedulap1.Text <> "" Then
            consultarpersona(Me.Txt_Cedulap1.Text)
            If dr.Read Then
                Me.Txt_Cedulap1.Text = dr(0).ToString
                Me.Txt_Nombrep1.Text = dr(1).ToString
                Me.Txt_Apellidosp1.Text = dr(2).ToString
                Me.Txt_Edadp1.Text = dr(3).ToString
                Me.Txt_Telefonop1.Text = dr(4).ToString
                Me.Txt_Correop1.Text = dr(5).ToString
                Me.Txt_Seccionp1.Text = dr(6).ToString
            Else
                Me.Txt_Cedulap1.Text = ""
                Me.Txt_Nombrep1.Text = ""
                Me.Txt_Apellidosp1.Text = ""
                Me.Txt_Edadp1.Text = ""
                Me.Txt_Telefonop1.Text = ""
                Me.Txt_Correop1.Text = ""
                Me.Txt_Seccionp1.Text = ""
                MsgBox("INGRESE UNA CEDULA VALIDA")
                Txt_Cedulap1.Enabled = False
            End If
        End If
            dr.Close()
    End Sub

Espero su ayuda
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Error con variable SqlDataReader

Publicado por Phil Rob (1554 intervenciones) el 11/10/2022 07:59:15
Hola,

Veo un problema que es probablemente el razón del error.

Escribes una consulta SELECT con una condicione sobre el campo CEDULA.
1
cmd.CommandText = "SELECT CEDULA, NOMBRES, APELLIDOS, EDAD, TELEFONO, CORREO, SECCION FROM DATOS WHERE CEDULA=" & identificacion

La variable identificacion que viene en el procedimiento es un tipo STRING. Si el campo en el DB es STRING tambien, es muy bien de utilizar este variable pero debes escribir los apóstrofos en la consulta :
1
cmd.CommandText = "SELECT CEDULA, NOMBRES, APELLIDOS, EDAD, TELEFONO, CORREO, SECCION FROM DATOS WHERE CEDULA=" & "'" & identificacion & "'"
.

Si el campo en el DB es un tipo numérico, seria bien de convertir identification en numérico, por ejemplo :
1
... ... ... WHERE CEDULA= " & CTYPE(identificacion, INTERGER)

Dice me si funcionna ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Error con variable SqlDataReader

Publicado por Phil Rob (1554 intervenciones) el 11/10/2022 08:22:26
Perdone me ..., aquí, es temprano este mañana y no estoy bien despierto

Si el campo en el DB es un tipo numérico, no debes lo convertir identification en numérico porque en la consulta es un cadena, un STRING. En este caso, tu consulta es bien y el inicial del error es otra.

Probablemente que identification es de tipo STRING y que debes escribir los apóstrofos.

Que tenga un buen día ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Roy

Error con variable SqlDataReader

Publicado por Roy (2 intervenciones) el 11/10/2022 21:04:09
Hola
Si efectivamente era ese el error
Muchas gracias por tu tiempo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar