Saludos a todos la comunidad,
bueno el caso es que he retomado un antiguo ejercicio que tenía de VB, y me estoy encontrando problemas.
De momento es muy sencillo, he declarado una clase BaseDatos.vb y ademas
tengo una funcion(listarCategorias) que tiene que retornar un arrayList
Código:
Imports System.Data.OleDb
Imports System.Collections.ArrayList
Public Class BaseDatos
'Dim conexion As OleDbConnection
Private Shared conexion As OleDbConnection
Private Shared comado As OleDbCommand
Private Shared cadenaConexion As String
Public Sub New(ByVal BaseDatos As String)
'cadenaConexion = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|" + BaseDatos + ";Persist Security info=True"
cadenaConexion = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\muebles.accdb"
conexion = New OleDbConnection(cadenaConexion)
End Sub
Public Sub New()
End Sub
Public Shared Function abrirBase() As Boolean
Try
If (conexion.State = System.Data.ConnectionState.Open) Then
Return True
conexion.Open()
Return True
End If
Catch ex As OleDbException
Return False
End Try
End Function
Public Shared Function cerrarBase() As Boolean
Try
conexion.Close()
Return True
Catch ex As OleDbException
Return False
End Try
End Function
Public Shared Function listarCategorias(ByVal mibase As BaseDatos) As ArrayList
Dim cat As New ArrayList()
Dim cadena As String = "SELECT*FROM categorias"
Try
conexion.Open()
comado = New OleDbCommand(cadena, conexion)
Dim registros As OleDbDataReader = comado.ExecuteReader
While (registros.Read())
cat.Add(registros.GetInt16("codigo"))
cat.Add(registros.GetString("nombre_categoria"))
End While
Return cat
Catch ex As Exception
End Try
End Function
End Class
En mi clase
FormCat.vb, invoco el metodo en un evento de boton (ButtonVerCategorias_Click)
El objetivo como podreis ver es agregar los datos del arrayList a un listBox
(
ListBoxCategorias)
Código:
Imports System.Data
Imports System.Data.OleDb
Imports System.Windows.Forms.DataGridView
Imports Muebles_DAW.BaseDatos
Public Class FormCat
Public Shared mibase As New BaseDatos("muebles.accdb")
Private Sub ButtonVerCategorias_Click(sender As Object, e As EventArgs) Handles ButtonVerCategorias.Click
Dim mibase As New BaseDatos
Dim listaCat As New ArrayList
Try
BaseDatos.abrirBase()
listaCat = BaseDatos.listarCategorias(mibase)
22 For i As Integer = 0 To listaCat.Count
ListBoxCategorias.Items.Add(listaCat(i))
Next
BaseDatos.cerrarBase()
Catch ex As OleDbException
End Try
End Sub
End Class
Aqui viene el error, al ejecutar me aparece una ventana de error en la linea 22:
del tipo null Reference Exception: señalado en rojo
System.NullReferenceException: Referencia a objeto no establecida como instancia de un objeto.
en Muebles_DAW.FormCat.ButtonVerCategorias_Click(Obje ct sender, EventArgs e) en C:\Users\mario\Documents\Visual Studio 2012\Projects\Muebles_DAW\Muebles_DAW\FormCat.vb:l ínea 22
La verdad, no se que se me está escapando, no se si es el texto de la cadena de conexion... la base de datos la tengo activada en el "Server Explorer" y tambien la tengo en el "Serch Solution explorer" junto con los demás formularios y clases.
El visual estudio es el 2012 y el archivo de Acces es del tipo accdb
Agradeceré cualquier tipo de ayuda.
Muchas gracias por anticipado