Visual Basic.NET - Error en DataTable con valores Null

 
Vista:
sin imagen de perfil
Val: 18
Ha aumentado su posición en 7 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Error en DataTable con valores Null

Publicado por Daniel (12 intervenciones) el 20/04/2018 05:21:41
Estimados:

Necesito su ayuda

Estoy llenando un datatable con los valores obtenidos de una consulta SQL de una tabla de una base de datos

El problema es que si la tabla presenta valores NULL en algunos registros (Por que no son datos obligatorios de ingreso en la base), el dataTable presenta un error al cargar la tabla, les muestro el codigo que tengo

Quisiera su ayuda, se que es una base SQLITE pero el DataTable tiene el mismo principio que en SQL

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Dim Conexion As New SQLiteConnection(My.Settings.DataBaseCadenaConexion)    'Crea la conexion con la base de datos
Dim UsuarioQuery As String = String.Format("SELECT IdUsuario, Nombre, Apellido, NombreUsuario, Contrasena, Nivel, Codigo FROM Usuarios WHERE NombreUsuario = '{0}' AND Contrasena = '{1}'", Usuario.Text, Contrasena.Text)
Dim Comando As New SQLiteCommand(UsuarioQuery, Conexion)    'Crea un comando con el Query y la conexion
 
Conexion.Open()             'Abre la conexion con la base
 
Dim Lector As SQLiteDataReader = Comando.ExecuteReader()
Dim Tabla As New DataTable
 
Tabla.Load(Lector)      'Rellena la tabla con los valores del reader
 
Lector.Close()            'Cierra el lector
 
DataGridView1.DataSource = Tabla                'CArga el DataGrid del Formulario con el recurso de la tAbla
 
Conexion.Close()

El codigo que muestra el error cuando en la base hay valores null es esta linea


1
Tabla.Load(Lector)      'Rellena la tabla con los valores del reader

y el mensaje de error del depurador es este

1
2
S
  Mensaje = No se pudieron habilitar las restricciones. Una o varias filas contienen valores que infringen las restricciones NON-NULL, UNIQUE o FOREIGN-KEY.
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 giancarlo
Val: 377
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Error en DataTable con valores Null

Publicado por giancarlo (488 intervenciones) el 20/04/2018 23:48:56
si usas el reader, despues de asignarle el executereader, debes poner
while reader.read
....cada vez que lee una fila de la tabla resultado
end while
reader.close 'cerrar el reader

tambien podrías usar:
1
2
3
4
dim cn as new sqliteconecction("cadena de conexion")
Dim dt As New DataTable
Dim da As New SqlDataAdapter("SELECT * FROM Table1", cn)
da.fill(dt) 'aqui se llena los datos del datatable
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
sin imagen de perfil
Val: 18
Ha aumentado su posición en 7 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Error en DataTable con valores Null

Publicado por Daniel (12 intervenciones) el 21/04/2018 06:22:35
Excelente aporte amigo

Solucionado el Problema, utilizando el DataAdapter en lugar del DataReader

Muchas Gracias
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
Imágen de perfil de giancarlo
Val: 377
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Error en DataTable con valores Null

Publicado por giancarlo (488 intervenciones) el 24/04/2018 02:30:43
para el uso de reader, sería algo así (copie el codigo que actualmente tengo, pero solo lo adaptas)

1
2
3
4
5
6
7
8
Dim reader As SqlDataReader = comando.ExecuteReader
While reader.Read
    Dim actual As New enDestino( _
        CInt(reader("iddestino")), _
        reader("nomdestino").ToString)
    lisDestinos.Add(actual)
End While
reader.Close()
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