12 febrero 2013

C# - Algoritmos - Conexión en Firebird (2005, 2008)

La clase Class_Connection.class
using FirebirdSql.Data.FirebirdClient;
using System;
using System.Data;
using System.IO;
using System.Configuration;
using System.Windows.Forms;
using System.Xml;

public class Class_Connection {
    private FbConnection Fb_Connection;

    public string Fb_ConnectionTXT() {
        StreamReader objReader = new StreamReader("\\FirebirdCN\\Firebird.txt");
        String ConnectionString;
        ConnectionString = "";
        ConnectionString = objReader.ReadLine();
        return ConnectionString;
    }

    public String Fb_ConnectionXML() {
        XmlDocument Xml;
        XmlNodeList NodeList;
        String ConnectionString = "";
        Xml = new XmlDocument();
        Xml.Load(Application.StartupPath + "\\FirebirdCN\\Firebird.xml");
        NodeList = Xml.SelectNodes("/FirebirCN");
        foreach (XmlNode Node in NodeList) {
            ConnectionString = ConnectionString + Node.ChildNodes.Item(0).Name + "=" + Node.ChildNodes.Item(0).InnerText + "; ";
            ConnectionString = ConnectionString + Node.ChildNodes.Item(1).Name + "=" + Node.ChildNodes.Item(1).InnerText + "; ";
            ConnectionString = ConnectionString + Node.ChildNodes.Item(2).Name + "=" + Node.ChildNodes.Item(2).InnerText + "; ";
            ConnectionString = ConnectionString + Node.ChildNodes.Item(3).Name + "=" + Node.ChildNodes.Item(3).InnerText + "; ";
            ConnectionString = ConnectionString + Node.ChildNodes.Item(4).Name + "=" + Node.ChildNodes.Item(4).InnerText + "; ";
            ConnectionString = ConnectionString + Node.ChildNodes.Item(5).Name + "=" + Node.ChildNodes.Item(5).InnerText + "; ";
            ConnectionString = ConnectionString + Node.ChildNodes.Item(6).Name + "=" + Node.ChildNodes.Item(6).InnerText + "; ";
            ConnectionString = ConnectionString + Node.ChildNodes.Item(7).Name + "=" + Node.ChildNodes.Item(7).InnerText;
        }
        return ConnectionString;
    }

    public void Fb_Open() {
        try {
            Fb_Connection = new FbConnection();
            Fb_Connection.ConnectionString = Fb_ConnectionXML();
            Fb_Connection.Open();
        } catch (InvalidCastException e) {
            MessageBox.Show("Unable to establish the Connection to the server");
        }
    }

    public void Fb_Close() {
        Fb_Connection.Close();
    }

    public void Fb_Execute(String SQL) {
        try {
            Fb_Open();
            FbCommand cmd = new FbCommand(SQL, Fb_Connection);
            cmd.ExecuteNonQuery();
            Fb_Close();
        } catch (InvalidCastException e) {
            MessageBox.Show("Unable to establish the Connection to the server");
        }
    }

    public DataTable Fb_DataTable(String SQL) {
        DataTable dt = new DataTable();
        try {
            Fb_Open();
            FbDataAdapter da = new FbDataAdapter(SQL, Fb_Connection);
            da.Fill(dt);
            Fb_Close();
        } catch (InvalidCastException e) {
            MessageBox.Show("Unable to establish the Connection to the server");
        }
        return dt;
    }

    public DataSet Fb_DataSet(String SQL) {
        DataSet dt = new DataSet();
        try {
            Fb_Open();
            FbDataAdapter da = new FbDataAdapter(SQL, Fb_Connection);
            da.Fill(dt, "Table");
            Fb_Close();
        } catch (InvalidCastException e) {
            MessageBox.Show("Unable to establish the Connection to the server");
        }
        return dt;
    }

}


El contenido del alchivo TXT
ServerType=0; User=SYSDBA; Password=masterkey; database=127.0.0.1:C:\LIMPIA.FDB; charset=UTF8
User=SYSDBA; Password=masterkey; DataSource=localhost; Database=C:\LIMPIA.FDB; Charset=UTF8; Port=; Pooling=true; ServerType=0


El Contenido del archivo XML
<?xml version="1.0" encoding="UTF-8"?>
<FirebirCN>
  <User>TheUser</User>
  <Password>ThePassword</Password>
  <Server>TheServer</Server>
  <Database>C:\Database.FDB</Database>
  <Charset>UTF8</Charset>
  <Port> </Port>
  <Pooling>false</Pooling>
  <ServerType>0</ServerType>
</FirebirCN>


Añadir referencias a las siguientes librerías

Download: FirebirdSql.Data.FirebirdClient.dll
Download: FirebirdDataAccess.Zhero.dll

4 comentarios:

Anónimo dijo...

YA NO FUNCIONAN LOS LINKS DE LAS REFERENCIAS

John McClane dijo...

Disculpa... Los links ya están actualizados

Unknown dijo...

Hola que tal amigo, como seria si quiero hacer la conexion dinamica?? es decir que el cliente pueda escoger con que base de datos quiere trabajar??

saludos!!

Anónimo dijo...

Si te refieres a crear algo para que te de un listado de todas las bases de datos, lo veo un poco complicado pero no imposible. Sería cuestión de investigar en los foros. De todas formas manejar esa información pude ser peligroso por los hackers.

Otra forma sería crear diferentes conexiones para cada base de datos, pero el proceso seria manual por parte del programador o tomar la información de algún archivo