[firebase-br] ASP .NET - Firebird
Rafael Cabral
rafael.cabral em icraft.com.br
Ter Maio 31 10:41:47 -03 2005
Vc pode criar uma classe onde quando for criar uma conexão, um adaptador ou
um comando que um objeto de acordo com o banco de dados usado:
Ex:
public class Conn
{
IDbConnection dbConn; //Interface de conexão
IDbDataAdapter dbAdapter; //Interface de adaptador
String dbTipo;
String stringConnection;
//Instancia conector
public void createConnection(String tipo, String strConnect)
{
switch (tipo)
{
case "SqlServer": //Provider do Sql Server
dbConn = new SqlConnection(strConnect);
break;
case "MySQL": //Provider do MySQL
dbConn = MySqlConnection(strConnect);
break;
case "Firebird": //Provider do Firebird
dbConn = FbConnection(strConnect);
break;
default: //Provider do Access, Oracle, qualquer um que suporte OleDb
dbConn = OleDbConnection(strConnect);
}
this.dbTipo = tipo;
this.stringConnection = strConnect;
}
//Instancia adaptador
public void createDataAdapter(String SQL)
{
switch (tipo)
{
case "SqlServer":
dbAdapter = new SqlDataAdapter(SQL, dbConn);
break;
case "MySQL":
dbAdapter = new MySqlDataAdapter(SQL, dbConn);
break;
case "Firebird":
dbAdapter = new FbDataAdapter(SQL, dbConn);
break;
default:
dbAdapter = OleDbDataAdapter(SQL, dbConn);
}
}
}
Não sei se com o MySQL funciona, mas fiz assim com o Firebird, SqlServer,
Oracle e Access e funciona perfeitamente. Recomendo também que vc crie um
método Fill para Select para cada adaptador caso precise realizar paginação
de registros, então nesse caso o createDataAdapter não servirá. Nesse método
Fill terá que criar os adaptadores e então dar o Fill imediatamente:
Ex:
DataSet dtSet;
switch (tipo)
{
case "Firebird":
new FbDataAdapter(SQL, dbConn).Fill(dtSet);
default:
new OleDbDataAdapter(SQL, dbConn).Fill(dtSet);
}
Espero ter ajudado. E desculpem a todos se isso ficou meio "OFF".
[]s,
Rafael Cabral
-----Original Message-----
From: Frederico Fernandes [mailto:fredy992 em hotmail.com]
Sent: terça-feira, 31 de maio de 2005 10:18
To: lista em firebase.com.br
Cc: rafael.cabral em icraft.com.br
Subject: RE: [firebase-br] ASP .NET - Firebird
Eu utilizo os componentes BDP porque preciso que esta aplicação acesse
vários tipos de banco. E eu utilizando este componentes eu não preciso de
ficar mudando os componentes para ter acesso a outro banco. E se eu usar o
Data Provider (Seria o ADO certo ?), eu teria que sempre mudar os compoentes
quando utilizar outro banco de dados. Ou tem outra saida ??
>From: "Rafael Cabral" <rafael.cabral em icraft.com.br>
>Reply-To: rafael.cabral em icraft.com.br, FireBase <lista em firebase.com.br>
>To: "'FireBase'" <lista em firebase.com.br>
>Subject: RE: [firebase-br] ASP .NET - Firebird
>Date: Tue, 31 May 2005 10:12:06 -0300
>
>Frederico,
>
>Já tentou usar o Data Provider do Firebird? Vc pode baixá-lo no site
>oficial
>do Firebird www.firebirdsql.org. Ainda não testei esse provider com o
>Interbase, acho que vc pode fazê-lo. ;)
>
>Eu particularmente não gosto dos componentes Bdp porque fizemos alguns
>testes e vimos que às vezes a conexão com o banco caía por algum motivo que
>ainda não descobrimos, então para provider de banco genéricos, prefiro usar
>o OleDb mesmo. Mas para firebird recomendo o Data Provider do Firebird que
>funciona muito bem.
>
>[]s,
>
>Rafael Cabral
>
>-----Original Message-----
>From: lista-bounces em firebase.com.br
>[mailto:lista-bounces em firebase.com.br]On Behalf Of Frederico Fernandes
>Sent: terça-feira, 31 de maio de 2005 09:52
>To: lista em firebase.com.br
>Subject: [firebase-br] ASP .NET - Firebird
>
>
>Pessoal,
>
> Estou fazendo um projeto ASP .NET usando dois banco de dados
>Interbase
>e o Firebird. E usando a linguagem C#. Eu fiz uma pequena busca onde usa o
>"BdpDataReader" para ler os dados do Banco. Quando eu chamo o metodo
>"ExecuteReader" ele me traz os dados e jogo em um "DropDownList". Funciona
>perfeitamente. Só que quando a minha query nao retorna nada, a minha
>aplicação fica parada quando eu chamo o metodo "ExecuteReader". Isto ocorre
>somente no banco de dados Firebird. Quando aponto para o banco de dados
>Interbase ele funciona. Estou utilizando os componentes BDP. Abaixo o meu
>código:
>
>
> private void LerLocalizacoes()
> {
> BdpDataReader Localizacao = null;
> BdpCommand comLocal = new BdpCommand();
> comLocal.CommandType = CommandType.Text;
> comLocal.Connection = conCentralBusca;
>
> try{
> comLocal.CommandText =
> "SELECT CODIGO, DESCRICAO FROM LOCALIZACAO ORDER
>BY
> DESCRICAO";
>
> conCentralBusca.Open();
> comLocal.Prepare();
>
> // Linha onde a aplicação fica parada.
> Localizacao = comLocal.ExecuteReader();
>
> if (Localizacao != null)
> {
> while(Localizacao.Read()){
> DropDownList.Items.Add(new
>
>ListItem(Localizacao.GetString(1),Localizacao.GetInt32(0).ToString()));
> }
> }
> }
> finally{
> Localizacao.Close();
> conCentralBusca.Close();
> }
> }
>
>_________________________________________________________________
>MSN Messenger: instale grátis e converse com seus amigos.
>http://messenger.msn.com.br
>
>
>
>
>
>______________________________________________
>FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
>Para editar sua configuração na lista, use o endereço
>http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>Para consultar mensagens antigas: http://firebase.com.br/pesquisa
_________________________________________________________________
MSN Messenger: instale grátis e converse com seus amigos.
http://messenger.msn.com.br
Mais detalhes sobre a lista de discussão lista