Problemas com DbCommand e DbParameter
29/07/2011
0
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
Posts
01/08/2011
Hernane Goncalves
01/08/2011
Francisco Gimenez
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?
03/08/2011
Hernane Goncalves
Clique aqui para fazer login e interagir na Comunidade :)