[firebase-br] Firebird ADO.NET Data Provider.

Nivaldo Martins nivaldomart em gmail.com
Qua Set 15 16:44:26 -03 2010


Você já verificou que string de conexão ele está construindo?. Está
apontando para a porta correta? o Server está aceitando conexões externas? A
porta está liberada no firewall?

Veja isso aí


Em 15 de setembro de 2010 14:49, Leonardo Vinicius Freitag <
freitagnx em gmail.com> escreveu:

> Olá pessoal!
>
> Estou com um problema, já pesquisei bastante e não consigo resolver.
> Desenvolvi um Web Service para ser consumido por um software que roda em
> Pocket PC com Windows Mobile. Esse Web Service utiliza a Firebird
> ADO.NETData Provider para acessar um banco de dados de um determinado
> sistema que
> possuo.
> Segue exemplo de um WebMetod:
>
>    [WebMethod] // método que retorna dados do produto
>    public Produtos LerProduto(string produtoCodigo)
>    {
>        Produtos meuProduto = new Produtos();
>
>        string connectionString;
>        cnDados stringConexao = new cnDados();
>        connectionString = stringConexao.GetConexao();
>
>
>        // abertura da conexão e início da transação
>        FbConnection connection = new FbConnection(connectionString);
>        connection.Open();
>        FbTransaction transaction = connection.BeginTransaction();
>
>        // exeução do comando no banco de dados
>        string selectQuery = "SELECT COD_ESTOQUE, NOME, PRECO_VENDA, GRUPO
> FROM ESTOQUE WHERE COD_ESTOQUE = @ICOD_ESTOQUE";
>        FbCommand command = new FbCommand(selectQuery, connection,
> transaction);
>        command.Parameters.Add("@ICOD_ESTOQUE", produtoCodigo);
>        FbDataReader leitor = command.ExecuteReader();
>
>        try
>        {
>            if (leitor.Read())
>            {
>                meuProduto.ProdCodigo = leitor.GetString(0);
>                meuProduto.ProdDescricao = leitor.GetString(1);
>                meuProduto.ProdPreco = leitor.GetFloat(2);
>                meuProduto.ProdGrupo = leitor.GetString(3);
>            }
>            else
>            {
>                meuProduto.ProdCodigo = "";
>                meuProduto.ProdDescricao = "";
>                meuProduto.ProdPreco = 0;
>                meuProduto.ProdGrupo = "";
>            }
>            return meuProduto;
>        }
>        catch (Exception e)
>        {
>            throw new Exception();
>        }
>        finally
>        {
>            transaction.Commit();
>            leitor.Close();
>            connection.Close();
>        }
>
> Segue exemplo de GetConexao();
>    public string GetConexao()
>    {
>        appIp = ConfigurationManager.AppSettings.Get("Key0");
>        appCaminho = ConfigurationManager.AppSettings.Get("Key1");
>        appUser = ConfigurationManager.AppSettings.Get("Key2");
>        appSenha = ConfigurationManager.AppSettings.Get("Key3");
>        //appDialect = ConfigurationManager.AppSettings.Get("Key4");
>
>        FbConnectionStringBuilder cs = new FbConnectionStringBuilder();
>        cs.DataSource = appIp;
>        cs.Database = appCaminho;
>        cs.UserID = appUser;
>        cs.Password = appSenha;
>        cs.Dialect = appDialect;
>        cs.ConnectionLifeTime = 1;
>        cs.ConnectionTimeout = 15;
>        cs.MaxPoolSize = 200;
>
>        appConexao = cs.ToString();
>
>        return appConexao;
>    }
>
> Tudo funcionava bem, porém deparei-me com uma situação em que acontece um
> travamento e me é apresentada uma mensagem no Pocket que finalizava com:
>
> Server was unable to process request.
> ---> Timeout exceeded.
>
>
> Tentei utilizar esse mesmo WebMethod para ler produtos no banco de dados
> utilizando o Firefox (navegador), e depois de exatos 15 segundos obtive a
> seguinte resposta:
>
> System.SystemException: Timeout exceeded.
>   at FirebirdSql.Data.FirebirdClient.FbConnectionPool.CheckMaxPoolSize()
>   at FirebirdSql.Data.FirebirdClient.FbConnectionPool.CheckOut()
>   at FirebirdSql.Data.FirebirdClient.FbConnection.Open()
>   at Service.LerProduto(String produtoCodigo)
>
> Resolvi então compartilhar meu problema na lista e pedir encarecidamente a
> atenção  e ajuda dos companheiros.
>
> Leonardo Freitag.
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista