[firebase-br] Firebird ADO.NET Data Provider.
Leonardo Vinicius Freitag
freitagnx em gmail.com
Qui Set 16 09:11:57 -03 2010
Informações que são colocadas na connection string:
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;
cs.Port = 3050;
cs.Pooling = true;
appConexao = cs.ToString();
return appConexao;
}
Em cada WebMethod que precisa busar alguma informação no banco de dados, fiz
como no exemplo:
[WebMethod] // método que lê e 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();
}
}
Porém, ontem de noite fiz novos testes, e continuo obtendo o travamento,
depois de lançar umas 80 mesas. Eu imagino que o problema seja relativo ao
número de conexões, pois cada vez que preciso ler alguma informação,
conecto, faço a leirua e fecho a conexão. Só que me parece que as conexões
não estão sendo fechadas, e estou atingindo o número limite permitido.
Leonardo Freitag
Em 15 de setembro de 2010 17:05, renato <centriscorps em gmail.com> escreveu:
> Um exemplo de connection string.
> Coloque dentro do seu web.config
>
>
> <appSettings>
> <add key="nome_chave" value="User=SYSDBA; Password=masterkey;
> Database=c:\pasta\banco.fdb; DataSource=10.1.1.1; Port=3050; Dialect=3;
> Charset=NONE;
> Role=; Connection lifetime=15; Pooling=true; MinPoolSize=0;
> MaxPoolSize=50;
> Packet Size=4092; ServerType=0"/>
> </appSettings>
>
> A descrição desses parâmetros e de outros você encontra em
> http://www.firebirdsql.org/firebirdtutorial/index.html
>
>
> Renato
> ______________________________________________
> 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