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

marcelo - teflamar marcelo em teflamar.com.br
Qui Set 16 14:27:55 -03 2010


  vc pode também tentar com o dataset, puxar os dados para ele e fechar 
a conexão.
depois, alterar o que tiver que alterar, e atualizar os dados.


Em 15/09/2010 14:49, Leonardo Vinicius Freitag 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