Problemas com DbCommand e DbParameter

29/07/2011

0

Salve galera.
To precisando de uma ajudinha, será que alguém pode dar uma força?Seguinte, estou fazendo uma Classe genéria de conexão onde pretendo trabalha com os bancos Oracle, SqlServer, Informix e MySql.
Estou usando DbConnection onde posso usa o DbProviderFactory para pegar que Provider estou usando e com isso usar DbCommand, DbDataReader, DbParameter e por ai vai, fica bem genérico e sem mudar nada funciona com a maioria dos bancos... Até o momento funciona que é uma blz, conecto em todos os bancos, faço select e por ai vai, mas ja me deparei com um problema.
Criei uma função para executar Querys no banco (Inserts, Updates, Deletes), nela eu passo o Sql, exemplo:
/// Executa a query no banco.voDB.fBdSqlQuery("INSERT INTO TBDATA (dta1) VALUES ('2000-12-27')");

Se for assim vai blz, mas quero usar Parametros.Então criei uma função para adicionar parametros ao DbCommand dessa função ai, ai faço assim:
/// Adiciona parametros(Nome do parametro, tipo do parametro e valor).voDB.fAddParam(":dta1", DbType.Data, "12/12/2012");
/// Executa a query no banco.voDB.fBdSqlQuery("INSERT INTO TBDATA (dta1) VALUES (:dta1)");

Se to conectado no oracle, funciona blz, mas se por exemplo estou conectado no MySql, vai da erro, por que ao invez de dois pontos (:) tenho que usa arroba(@) para nomear o parametro.Eu não queria ter isso fixo nas aplicações, queria passa sempre o SQL do mesmo jeito.
Eu poderia sempre usar dois pontos (:) por exemplo e dentro dessa função fBdSqlQuery verificar que banco estou e ser for diferente de Oracle trocar os dois pontos (:) por aquilo que funcionar no banco que to conectado (@, ?, #, sei la...), isso resolveria meu problema, mas a questão é, não tem nada nativo?
Quando uso OleDB (OleDBCommand), é só eu usar interrogação (?) no Sql que ele põem os parametros pela ordem, e funciona para todos os bancos, mas para DbCommand não funciona.
Alguém pode me da uma luz?
Francisco Gimenez

Francisco Gimenez

Responder

Posts

01/08/2011

Francisco Gimenez


Ninguém pode me da uma luz ae?
Responder

01/08/2011

Hernane Goncalves

Cara ja tive muitos problemas com isso.   a solução que eu tenho pra voce é que passe a ultilizar ADO. entity Framework.   Lá voce faz qualquer conexão com qualquer banco, sem ter problema algum.
Responder

01/08/2011

Francisco Gimenez

Mas ai não fico muito preso ao Framework?
Pois a empresa que trabalho, o sistema tem de ser muito flexível, muita coisa ta no banco, etc e tal.Há criação de telas dinâmicas que os itens da tela estão cadastrados no banco e por ai vai.
O que vc me diz?
Responder

03/08/2011

Hernane Goncalves

Preso voce fica, pois seu servidor vai ter que estar atualizado com no minio o net framework 3.5   mas de qualquer forma vale apena, voce vai ver, vai facilitar sua vida.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar