Ver Mensaje Individual
  #4 (permalink)  
Antiguo 12/09/2009, 11:21
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años, 2 meses
Puntos: 2658
Respuesta: Funcion para consultar una bd en mysql

Nunca te va a funcionar si el comando.ExecuteNonQuery() no lo pones dentro del Try/Catch...
De todos modos es una función un poco tosca, porque más que controlar si falla, deberías verificar si existe antes de enviar a hacer una tarea que no podrá obtener...
Código vb.net:
Ver original
  1. Public Function InsertarRegistro(ByRef IdMes As String, ByRef TxMes As String)
  2.         Dim actualizasql As String
  3.         Dim comando As MySqlCommand
  4.     Try
  5.         connecttosql()
  6.         conn.Open()
  7.         actualizasql = "SELECT COUNT(*) FROM MESES WHERE mes_id = '" & idmes & "';"
  8.         comando = New MySqlCommand(actualizasql, conn)
  9.         If Convert.ToInt32(comando.ExecuteNonQuery)>0 Then
  10.             MessageBox.Show("El mes ingresado ya existe.", "Error de Ingreso", MessageBoxButtons.OK, MessageBoxIcon.Error)
  11.             Return False
  12.         Else
  13.             actualizasql = "INSERT INTO MESES VALUES('" & idmes & "', '" & txmes & "');"
  14.             comando = New MySqlCommand(actualizasql, conn)
  15.             comando.ExecuteNonQuery
  16.             Return True
  17.         End If
  18.     Catch ex As MySqlException
  19.         MessageBox.Show("Error de base de datos en la funcion de ingreso..", "Error de MySQL", MessageBoxButtons.OK, MessageBoxIcon.Error)
  20.         Return False
  21.     Catch ex As Exception
  22.         MessageBox.Show("Error de ejecución en la función de ingreso", "Error de aplicacion", MessageBoxButtons.OK, MessageBoxIcon.Error)
  23.         Return False
  24.     End Try
  25. End Function

Este ejemplo te muestra una forma esquematizada de cómo verificar e insertar. Estoy asumiendo que connecttosql() es una función o método que crea una conexión sin abrirla (cosa que me parece ineficiente), y luego dentro de este caso lo abres. Además estoy imaginando que hay un campo mes_id que conserva el id del mes. Si es otro el nombre o el campo, debes ponerlo allí.
Ten en cuenta que una Exception puede capturar casi cualquier excepción, pero no identificarlas por clase de objeto; en cambio una MysqlException te permite capturar la excepción si y sólo si es un error de la base. Por eso van en ese orden.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)