Firebird y VB.Net


En este post les hablaré un poco sobre la relación de estos dos elementos que aunque muchas cosas vienen en el Intenet, no deja de ser una ayuda encontrar todo junto.

Hablamos de Firebird refiriéndonos a la Base de datos Open Source <http://www.firebirdsql.org/> y su conector para .Net <http://www.firebirdsql.org/en/net-provider/>

La instalación del servidor de bases de datos se debe adaptar a tus necesidades, es decir si lo quieres en el sabor Classic, SuperClassic o SuperServer, las diferencias están muy bien marcadas en la página de Firebird. La instalación del componente es igual de sencilla, solo es cuestión de descargarla e instalar.

Para poder usarla en tu proyecto VB.Net hay que incluir la referencia a la DLL FirebirdSql.Data.Firebird.dll (Si instalaste usando el MSI usualmente se encuentra en c:\Archivos de Programa (ó C:\Program Files)

Ahora si viene lo bueno… como conectarse y hacer queries:

Conexión

Imports FirebirdSql.Data.FirebirdClient

dbconn = New FbConnection("User=SYSDBA;Password=masterkey;Database=C:\MIDB.FDB;DataSource=localhost;")
dbconn.Open()

Recuerda cambiar los datos específicos de tu base de datos.

Para seleccionar un dato:

Dim query As New FbCommand("SELECT IDTEXT, SVALUE FROM GENSETTINGS", dbconn)
Dim dr As FbDataReader = query.ExecuteReader()
While dr.Read()
Dim SETTING = dr("IDTEXT")
Dim VALUE = dr("SVALUE")
End While

Para insertar/actualizar/eliminar un dato:
¡OJO! Para insertar, actualizar o eliminar un dato, forzosamente necesitas iniciar y cerrar una transacción.

Dim addDetailsTransaction As FbTransaction = dbconn.BeginTransaction()
Dim query As New FbCommand("INSERT INTO JOBS_REBOUND (ID, JOBID, STAMP) VALUES (0, 10, 'NOW')", dbconn, addDetailsTransaction)
query.UpdatedRowSource = System.Data.UpdateRowSource.Both
Dim ENQ = query.ExecuteNonQuery()
If ENQ = 1 Then
'Satisfactoria
addDetailsTransaction.Commit()
Else
'Hubo un error
addDetailsTransaction.Rollback()
End If
addDetailsTransaction.Dispose()

Para insertar un registro en Firebird regresando el ID creado
Hay que crear un parámetro de salida llamado RET_ID y anexarlo en el query.

Dim addDetailsTransaction As FbTransaction = dbconn.BeginTransaction()
Dim query As New FbCommand("INSERT INTO JOBS_REBOUND (ID, JOBID, STAMP) VALUES (0,10,'NOW') RETURNING ID", dbconn, addDetailsTransaction)
query.UpdatedRowSource = System.Data.UpdateRowSource.Both
Dim param2 = query.CreateParameter()
param2.ParameterName = "RET_ID"
param2.FbDbType = FirebirdSql.Data.FirebirdClient.FbDbType.Integer
param2.Direction = System.Data.ParameterDirection.Output
query.Parameters.Add(param2)
Dim a = query.ExecuteNonQuery()
If a = 1 Then
Dim allok = True
For Each attri As Rechazo.SampleAtt In Me.Attributos
Dim query2 As New FirebirdSql.Data.FirebirdClient.FbCommand("INSERT INTO JOBS_REB_SAMPLE (ID, REBOUNDID, ATTID, SAMPLE) VALUES (0, " & param2.Value.ToString() & ", " & attri.ATTID & ", " & attri.SAMPLE & ")", dbconn, addDetailsTransaction)
Dim result As Integer = query2.ExecuteNonQuery()
If result = 1 Then
Else
allok = False
End If
Next
addDetailsTransaction.Commit()
Else
addDetailsTransaction.Rollback()
End If
addDetailsTransaction.Dispose()

Espero les sirva este pequeño compendio, muchas de las verificaciones fueron omitidas para simplificar el ejemplo, pero debes tener en cuenta que siempre la conexión debe estar abierta, debes cerrarlas de igual manera.

Comments

Loading comments...

Leave a Comment

Email will not be displayed publicly
0/1000 characters

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.