none
classe para acesso a dados firebird

    Question

  • Olá pessoal; Uso o sql serve como banco de dados, então eu tenho esta

    classe abaixo que faz a conexão.

    Agora estou utilizando o firebird.Como criaria uma classe para fazer

    o acesso a base de dados do firebird?

    Tentei usar a connetion string do firebird neste código mas não funci

    ona.

    obrigado

    using System; using System.Text; using System.Data; using System.Data.SqlClient; using System.Configuration; using System.Collections.Generic; namespace Conexao_Firebird { public class DBAccess : IDisposable { private IDbCommand cmd = new SqlCommand(); private string strConnectionString = ""; public DBAccess() { strConnectionString = ConfigurationManager.ConnectionStrings["FireBirdConnectionString"].ToString(); SqlConnection cnn = new SqlConnection(); cnn.ConnectionString = strConnectionString; cmd.Connection = cnn; //cmd.CommandType = CommandType.StoredProcedure; cmd.CommandType = CommandType.Text; } public IDataReader ExecuteReader() { IDataReader reader = null; try { this.Open(); reader = cmd.ExecuteReader(CommandBehavior.CloseConnection); } catch (Exception ex) { throw new Exception(ex.Message); } finally { this.Close(); } return reader; } public IDataReader ExecuteReader(string commandtext) { IDataReader reader = null; try { cmd.CommandText = commandtext; reader = ExecuteReader(); } catch (Exception ex) { throw new Exception(ex.Message); } return reader; } public object ExecuteScalar() { object obj = null; try { Open(); obj = cmd.ExecuteScalar(); Close(); } catch (Exception ex) { throw new Exception(ex.Message); } return obj; } public object ExecuteScalar(string commandtext) { object obj = null; try { cmd.CommandText = commandtext; obj = ExecuteScalar(); } catch (Exception ex) { throw new Exception(ex.Message); } return obj; } public int ExecuteNonQuery() { int i = -1; try { Open(); i = cmd.ExecuteNonQuery(); } catch (Exception ex) { throw new Exception(ex.Message); } finally { Close(); } return i; } public int ExecuteNonQuery(string commandtext) { int i = -1; try { cmd.CommandText = commandtext; i = ExecuteNonQuery(); } catch (Exception ex) { throw new Exception(ex.Message); } return i; } public DataSet ExecuteDataSet() { SqlDataAdapter da = null; DataSet ds = null; try { da = new SqlDataAdapter(); da.SelectCommand = (SqlCommand)cmd; ds = new DataSet(); da.Fill(ds); } catch (Exception ex) { throw new Exception(ex.Message); } return ds; } public DataSet ExecuteDataSet(string commandtext) { DataSet ds = null; try { cmd.CommandText = commandtext; ds = ExecuteDataSet(); } catch (Exception ex) { throw new Exception(ex.Message); } return ds; } public string CommandText { get { return cmd.CommandText; } set { cmd.CommandText = value; cmd.Parameters.Clear(); } } public IDataParameterCollection Parameters { get { return cmd.Parameters; } } public void AddParameter(string paramname, object paramvalue) { SqlParameter param = new SqlParameter(paramname, paramvalue); cmd.Parameters.Add(param); } public void AddParameter(IDataParameter param) { cmd.Parameters.Add(param); } public string ConnectionString { get { return strConnectionString; } set { strConnectionString = value; } } private void Open() { cmd.Connection.Open(); } private void Close() { cmd.Connection.Close(); } public void Dispose() { cmd.Dispose(); } } }


    Thursday, October 11, 2012 1:01 PM

Answers

  • Olá Pedro,

    Não vai funcionar, pois vc utiliza classes de acesso a dados como SqlDataApdater, SqlConnection, SqlCommand, etc. Estas classes são feitas exclusivamente para o SQL Server.

    O Provider que vc fez o download provavelmente contém um conjunto de classes próprias para o Firebird.

    Basta vc criar outra classe como esta do SQL e substituir os objetos de acesso a dados do SQL pelo do Firebird.

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    Microsoft MVP - Data Platform Development
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    • Marked as answer by Pedrohgb7 Thursday, October 11, 2012 2:40 PM
    Thursday, October 11, 2012 1:26 PM

All replies

  • Olá Pedro,

    Não vai funcionar, pois vc utiliza classes de acesso a dados como SqlDataApdater, SqlConnection, SqlCommand, etc. Estas classes são feitas exclusivamente para o SQL Server.

    O Provider que vc fez o download provavelmente contém um conjunto de classes próprias para o Firebird.

    Basta vc criar outra classe como esta do SQL e substituir os objetos de acesso a dados do SQL pelo do Firebird.

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    Microsoft MVP - Data Platform Development
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    • Marked as answer by Pedrohgb7 Thursday, October 11, 2012 2:40 PM
    Thursday, October 11, 2012 1:26 PM
  • obrigado, vou pesquisar
    Thursday, October 11, 2012 2:40 PM
  • Olá Pedro,

    Voce tem que usar um provider proprio para o firebird.

    http://www.firebirdsql.org/en/net-provider/

    declare

    using FirebirdSql.Data.FirebirdClient;

    FbConnection, FbCommand, FbDataAdapter, FbDbType, etc


    Zagatti, Angelo Itápolis-SP

    Tuesday, October 30, 2012 11:21 AM