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.BothDim ENQ = query.ExecuteNonQuery()If ENQ = 1 Then 'Satisfactoria addDetailsTransaction.Commit()Else 'Hubo un error addDetailsTransaction.Rollback()End IfaddDetailsTransaction.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.BothDim param2 = query.CreateParameter()param2.ParameterName = "RET_ID"param2.FbDbType = FirebirdSql.Data.FirebirdClient.FbDbType.Integerparam2.Direction = System.Data.ParameterDirection.Outputquery.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 IfaddDetailsTransaction.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
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.