///Capa de Datos: Clase que hereda de la clase: BaseDatos, la cual
///sobreescribe sus métodos virtuales.
///Desarrollada por: Raciel Moreno.
///Fecha de creación: Agosto-2010
///Fecha de publicación: 15-agosto-2011.
///Todos los derechos reservados.(C)
using System;
using System.Collections.Generic;
using System.Text;
using FirebirdSql.Data.FirebirdClient;
using System.Data;
namespace accesoAdatos
{
public class FireBird2_1 : BaseDatos
{
/// <summary>
/// Constructor de la clase
/// </summary>
public FireBird2_1() { }
/// <summary>
/// Variable del tipo FbConnection.
/// </summary>
FbConnection FbConnection;
/// <summary>
/// Constructor sobrecargado de la clase. Se deben asignar las variables :strUsuarioBd, strPasswordBd, strIPservidorBd, strRutaBd.
/// </summary>
public FireBird2_1(string strUsuarioBD, string strPasswordBD, string strIPservidorBD, string strRutaBD)
{
strUsuarioBd = strUsuarioBD;
strPasswordBd = strPasswordBD;
strIPservidorBd = strIPservidorBD;
strRutaBd = strRutaBD;
strCadenaDeConexion = "ServerType=0;User=" + strUsuarioBd + ";Password=" + strPasswordBd + ";Size=4096;Dialect=3;Pooling=true;database=" + strIPservidorBd + ":" + strRutaBd;
}
#region Uso de procedimientos almacenados
/// <summary>
/// Arreglo de variables del tipo FbParameter, que almacena los parametros del procedimiento almacenado.
/// </summary>
private FbParameter[] Parametros;
/// <summary>
/// Metodo que retorna un FdDbType tomando como condición el nombre del tipo que se desee retornar.
/// </summary>
/// <param name="Tipo">Nombre del tipo</param>
/// <returns>FbDbType</returns>
private FbDbType DbTipo(string Tipo)
{
FbDbType FbDbType = FbDbType.Text;
switch (Tipo)
{
case "Array": { FbDbType = FbDbType.Array; break; }
case "BigInt": { FbDbType = FbDbType.BigInt; break; }
case "Binary": { FbDbType = FbDbType.Binary; break; }
case "Boolean": { FbDbType = FbDbType.Boolean; break; }
case "Char": { FbDbType = FbDbType.Char; break; }
case "Date": { FbDbType = FbDbType.Date; break; }
case "Decimal": { FbDbType = FbDbType.Decimal; break; }
case "Double": { FbDbType = FbDbType.Double; break; }
case "Float": { FbDbType = FbDbType.Float; break; }
case "Guid": { FbDbType = FbDbType.Guid; break; }
case "Integer": { FbDbType = FbDbType.Integer; break; }
case "Numeric": { FbDbType = FbDbType.Numeric; break; }
case "SmallInt": { FbDbType = FbDbType.SmallInt; break; }
case "Text": { FbDbType = FbDbType.Text; break; }
case "Time": { FbDbType = FbDbType.Time; break; }
case "TimeStamp": { FbDbType = FbDbType.TimeStamp; break; }
case "VarChar": { FbDbType = FbDbType.VarChar; break; }
}
return FbDbType;
}
override public void IniciaProcedimientoAlmacenado(int intTotalParametros)
{
strErrorEnEjecucion = "";
try
{
Parametros = new FbParameter[intTotalParametros];
strNombresParametrosSalida.Clear();
}
catch (Exception ex)
{
strErrorEnEjecucion = ex.Message;
}
}
override public void AddParametro(Int32 intIndexParametro, string strNombreParametro, ParameterDirection pdDireccion, String strNombreTipo, Int32 Longitud, string Valor)
{
strErrorEnEjecucion = "";
try
{
Parametros[intIndexParametro] = new FbParameter();
Parametros[intIndexParametro].ParameterName = strNombreParametro;
Parametros[intIndexParametro].Direction = pdDireccion;
Parametros[intIndexParametro].FbDbType = DbTipo(strNombreTipo);
Parametros[intIndexParametro].Size = Longitud;
Parametros[intIndexParametro].Value = Valor;
if (pdDireccion == ParameterDirection.InputOutput || pdDireccion == ParameterDirection.Output)
strNombresParametrosSalida.Add(strNombreParametro);
}
catch (Exception ex)
{
strErrorEnEjecucion = ex.Message;
}
}
#endregion
override public bool boolProbarConexion()
{
strErrorEnEjecucion = "";
try
{
FbConnection = new FbConnection(strCadenaDeConexion);
FbConnection.Open();
FbConnection.Close();
FbConnection = null;
return true;
}
catch (Exception ex)
{
strErrorEnEjecucion = ex.Message;
return false;
}
}
override public DataTable dtEjecutarConsultaSQL(string strConsultaSQL, string strNombreTabla)
{
strErrorEnEjecucion = "";
try
{
DataSet DataSet = new DataSet();
FbDataAdapter DataAdapter = new FbDataAdapter(strConsultaSQL, strCadenaDeConexion);
DataAdapter.Fill(DataSet, strNombreTabla);
DataAdapter = null;
return DataSet.Tables[strNombreTabla];
}
catch (Exception ex)
{
strErrorEnEjecucion = ex.Message;
return null;
}
}
override public DataTableReader dtEjecutarConsultaSQL(string strConsultaSQL)
{
strErrorEnEjecucion = "";
try
{
DataSet DataSet = new DataSet();
FbDataAdapter DataAdapter = new FbDataAdapter(strConsultaSQL, strCadenaDeConexion);
DataAdapter.Fill(DataSet);
DataAdapter = null;
return DataSet.Tables[0].CreateDataReader();
}
catch (Exception ex)
{
strErrorEnEjecucion = ex.Message;
return null;
}
}
override public bool boolEjecutarComandoSQL(string strComandoSQL)
{
strErrorEnEjecucion = "";
try
{
FbConnection = new FbConnection(strCadenaDeConexion);
FbConnection.Open();
FbCommand FbCommand = new FbCommand(strComandoSQL, FbConnection);
FbCommand.ExecuteNonQuery();
FbConnection.Close();
FbConnection = null;
FbCommand = null;
return true;
}
catch (Exception ex)
{
strErrorEnEjecucion = ex.Message;
return false;
}
}
override public bool boolEjecutaTransaccion(List<string> lstComandos)
{
strErrorEnEjecucion = "";
FbTransaction FbTransaction = null;
try
{
FbConnection = new FbConnection(strCadenaDeConexion);
FbConnection.Open();
FbTransaction = FbConnection.BeginTransaction();
FbCommand FbComando;
foreach (string comando in lstComandos)
{
FbComando = new FbCommand(comando, FbConnection);
FbComando.Transaction = FbTransaction;
FbComando.ExecuteNonQuery();
}
FbTransaction.Commit();
FbConnection.Close();
FbConnection = null;
return true;
}
catch (Exception ex)
{
try
{
FbTransaction.Rollback();
}
catch (Exception exException)
{
strErrorEnEjecucion = exException.Message;
return false;
}
strErrorEnEjecucion = ex.Message;
return false;
}
}
override public bool boolEjecutaProcedimientoAlmacenado()
{
strErrorEnEjecucion = "";
try
{
FbConnection = new FbConnection(strCadenaDeConexion);
FbConnection.Open();
ParametrosSalida = new List<string>();
FbCommand FbCommand = new FbCommand();
FbCommand.CommandType = CommandType.StoredProcedure;
FbCommand.Connection = FbConnection;
FbCommand.Parameters.AddRange(Parametros);
FbCommand.CommandText = strNombreProcedimientoAlmacenado;
FbCommand.ExecuteNonQuery();
foreach (string strvalor in strNombresParametrosSalida)
{ ParametrosSalida.Add(FbCommand.Parameters[strvalor].Value.ToString());
{ ParametrosSalida.Add(FbCommand.Parameters[strvalor].Value.ToString());
}
FbConnection.Close();
FbConnection = null;
return true;
}
catch (Exception ex)
{
strErrorEnEjecucion = ex.Message;
return false;
}
}
}
}