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:
Aqui viene el error, al ejecutar me aparece una ventana de error en la linea 22: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
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