ERRO COM CONECTOR.NET MYSQL
Olá amigos,
estou mudando processos dos meu sistema, adotando técnicas POO, ( seguindo as orientações do kerplunk).
mas ainda tenho muitas consultas que estão embutidas nos forms. muitos carregamentos de dados com novas chamadas a base de dados.
com o driver ODBC nunca tive problema, poderia criar 1 conexão e usa-la em diversas chamadas ( sempre usando Datareader),
por exemplo lendo um pedido com pedido > cliente> itens pedido>detalhes de cada itens>transportadora entre outras chamadas.
fazia isso sem fechar nem o DR e nem conexão ( fecha só ao final do carregamento)
com conector.net já não é possÃvel vários DR abertos ao mesmo tempo,
tendo em vista que não ha como mudar todo o projeto agora e passar isso para classes ,
qual seria a melhor maneia de contornar essa limitação de Datareader simultâneo?
algo como um pool de conexões ( a conexão esta em uso . cria uma nova).
a variável connection e comnmad são public e uso uma só para todo sistema. isso é public para trabalhar com transaction , posso chamar varias subs com rotina de gravação e dar um commit no final.
estou mudando processos dos meu sistema, adotando técnicas POO, ( seguindo as orientações do kerplunk).
mas ainda tenho muitas consultas que estão embutidas nos forms. muitos carregamentos de dados com novas chamadas a base de dados.
com o driver ODBC nunca tive problema, poderia criar 1 conexão e usa-la em diversas chamadas ( sempre usando Datareader),
por exemplo lendo um pedido com pedido > cliente> itens pedido>detalhes de cada itens>transportadora entre outras chamadas.
fazia isso sem fechar nem o DR e nem conexão ( fecha só ao final do carregamento)
com conector.net já não é possÃvel vários DR abertos ao mesmo tempo,
tendo em vista que não ha como mudar todo o projeto agora e passar isso para classes ,
qual seria a melhor maneia de contornar essa limitação de Datareader simultâneo?
algo como um pool de conexões ( a conexão esta em uso . cria uma nova).
a variável connection e comnmad são public e uso uma só para todo sistema. isso é public para trabalhar com transaction , posso chamar varias subs com rotina de gravação e dar um commit no final.
Con.open
faz o que precisa
Con.close
faz o que precisa
Con.close
não da kurtgu
abro conexão
-- abro pedido
-- abro e percorro itens do pedido
-- para cada item abro detalhes do item
-- Abro cliente
-- detalhes do cliente
--abro endereço
-- fecho detalhes
-- fecho cliente
-- Abro transportadora
-- detalhes da transportadora
-- fecho transportadora
fecho pedido
fecho conexão
essa forma sempe funcionou com ODBC. mas para .NET não e pra mudar toda a estrura pra classe não daria agora.
abro conexão
-- abro pedido
-- abro e percorro itens do pedido
-- para cada item abro detalhes do item
-- Abro cliente
-- detalhes do cliente
--abro endereço
-- fecho detalhes
-- fecho cliente
-- Abro transportadora
-- detalhes da transportadora
-- fecho transportadora
fecho pedido
fecho conexão
essa forma sempe funcionou com ODBC. mas para .NET não e pra mudar toda a estrura pra classe não daria agora.
No meus tempos de POG eu lia o DataReader jogava num ArrayList para livrá-lo de todo o mal!
então... como não passei pra classes POO, posso dizer que estou na POG,
passo o Próprio DR como parâmetro na sub que vai buscar os detalhes.
a mesma coisa tenho numa function recursiva de listagem de detalhes de produtos, ela chama ela mesma varias vezes, nunca fecha o DR e nem a conexão, vai lendo detalhes do pai, detalhes do filho, detalhes do filho do filho.. e por ai vai.
com um DR e conexão unica, pra mim seria impossÃvel fazer essa recursão.
passo o Próprio DR como parâmetro na sub que vai buscar os detalhes.
a mesma coisa tenho numa function recursiva de listagem de detalhes de produtos, ela chama ela mesma varias vezes, nunca fecha o DR e nem a conexão, vai lendo detalhes do pai, detalhes do filho, detalhes do filho do filho.. e por ai vai.
com um DR e conexão unica, pra mim seria impossÃvel fazer essa recursão.
Veja se esse tópico te ajuda
http://www.vbmania.com.br/index.php?modulo=forum&metodo=abrir&id=446767&pagina=1
http://www.vbmania.com.br/index.php?modulo=forum&metodo=abrir&id=446767&pagina=1
Tópico encerrado , respostas não são mais permitidas