Hola, estoy haciendo un pequeño programa para gestionar una tienda de animales (nada serio, sólo un ejercicio de clase), pero tengo un problemilla con la base de datos.
El problema es que el programa me ejecuta, pero cuando le pulso al botón para introducirlos no me los introduce ni se me ponen en blanco los textBox, ¿en qué puedo estar fallando?
Aquí pongo el código que tengo en la clase animales, en este caso quiero meter los datos de los textBox en las columnas Id, Precio, Cantidad de la tabla Animales, que pertenece a la base de datos TiendaAnimales:
Imports System.Data
Imports System.Data.OleDb
Declaro la cadena de conexión:
Public Class Animales
'Cadena de conexión:
Dim StrConexion As String = "Provider=Microsoft.jet.OLEDB.7.0; Data Source=C:***Tiendanimales\database\TiendaAnimales.accdb"
Abro la conexión:
Dim Conexion As OleDbConnection = New OleDbConnection(StrConexion)
Defino el comando:
Dim Comando As System.Data.OleDb.OleDbCommand = New OleDbCommand(StrComando, Conexion)
Dim StrComando As String = "Select * from TiendaAnimales"
Y aquí pongo el código del botón, que después de introducir los datos y pulsar este botón, me debería insertar los datos en la base de datos y borrar todo, pero no lo hace y no tampoco me notifica ningún error
Private Sub btnAñadirAnimal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAñadirAnimal.Click
Try
'Abrimos la conexión
Conexion.ConnectionString = StrConexion
Conexion.Open()
Dim query As String
query = "INSERT INTO Proveedores (Id, Precio, Cantidad) VALUES (@id, @precio, @cantidad)"
Dim cmd As OleDbCommand = New OleDbCommand(query, Conexion)
cmd.Parameters.AddWithValue("@id", CInt(txtIDAnimal.Text))
cmd.Parameters.AddWithValue("@precio", CInt(txtPrecioAnimal.Text))
cmd.Parameters.AddWithValue("@cantidad", CInt(txtCantidadAnimales.Text))
Try
cmd.ExecuteNonQuery()
Catch ex As Exception
MsgBox(ex.Message)
End Try
'Cerramos la conexión
Conexion.Close()
Catch ex As Exception
Exit Sub
End Try
txtIDAnimal.Text = " "
txtPrecioAnimal.Text = " "
txtCantidadAnimales.Text = " "
End Sub
End Class
La razón de que no te salte una excepción es que el primer manejo de excepción da positivo, pero lo único que haces para controlar la excepción es salir del método (Exit Sub)...
No manejo Acces, pero puedes empezar por dejar de anidar el manejo de excepciones para averiguar exáctamente donde está el error.
Try
'Abrimos la conexión
Conexion.ConnectionString = StrConexion
Conexion.Open()
Dim query As String
query = "INSERT INTO Proveedores (Id, Precio, Cantidad) VALUES (@id, @precio, @cantidad)"
Dim cmd As OleDbCommand = New OleDbCommand(query, Conexion)
cmd.Parameters.AddWithValue("@id", CInt(txtIDAnimal.Text))
cmd.Parameters.AddWithValue("@precio", CInt(txtPrecioAnimal.Text))
cmd.Parameters.AddWithValue("@cantidad", CInt(txtCantidadAnimales.Text))
cmd.ExecuteNonQuery()
'Cerramos la conexión
Conexion.Close()
Catch ex As Exception
MsgBox(ex.Message & ex.stacktrace)
Finally
' Limpio los textboxes
txtIDAnimal.Clear
txtPrecioAnimal.Clear
txtCantidadAnimales.Clear
End Try
saludos