daianyyy 0 Denunciar post Postado Fevereiro 22, 2010 Olá pessoal ...tive que fazer minha aplicação conectar em dois bancos , no sql server e no mysql ...conectou tudo bonitinho, só que na hora de inserir no mysql dá um erro no parametro @variavel ...acredito que por causa do simbolo @ , o que não acontece no sql server ...como faço pra resolver esse problema , não quero criar sqls diferentes para os bancos ....tem com resolver isso ??? Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Fevereiro 22, 2010 Que erro dá ? Posta aí. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Fevereiro 22, 2010 Como isto funciona em dois bancos ? A mesma aplicação pode rodar em dois bancos diferentes (o usuário escolhe) ou roda sempre em dois bancos (algo como uma base remota) ? Os mesmos SQL´s são executados para os dois (ou mais) bancos ? Compartilhar este post Link para o post Compartilhar em outros sites
daianyyy 0 Denunciar post Postado Fevereiro 23, 2010 Motta...tipo o usuario que escolhe ...dependendo da string de conexão que estiver habilitada meu sistema conecta ou no sql server ou no mysql . Até ai tah tudo ok ..as sql que eu tenho funcionam perfeitamente no sql server ....mas no mysql dá erro na hora de passar paramento que está usando o simbolo @variavelx....dá erro pelo tipo de simbolo que no sqlserver é @ e no mysql deve ser outro tipo de simbolo ....gostaria de saber c não tem um simbolo que fuincione para os dois .... Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Fevereiro 23, 2010 Posta o código. A sql não deveria mudar. Essa é uma query simples ou uma chamada de Stored Procedure? Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Fevereiro 23, 2010 Em geral os Sistemas multi-banco tem uma camada que fala com o BD, esta camada "traduz" o SQL básico da aplicação para o SQL padrão do BD destino (functions nativas,formato de datas etc). Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Fevereiro 23, 2010 Este @ com certeza é um parâmetro do .net e não do banco. E o MySql deve utilizar outro como por exemplo o ? sinal de interrogação. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
daianyyy 0 Denunciar post Postado Fevereiro 24, 2010 entaum meu sql esta assim : public const string INSERT_BLOCO = " INSERT INTO " + " BLOCO " + " (NOME ) " + "VALUES " + " (@NOME) "; Motta tem como você me explicar essa camada que traduz o sql ??? Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Fevereiro 24, 2010 Esta SQL que você fez funciona no SQL, mas não no MySQL ? Compartilhar este post Link para o post Compartilhar em outros sites
daianyyy 0 Denunciar post Postado Fevereiro 24, 2010 Isso mesmo ...me retorna um erro indicando o @ como errado na sql ....sendo que no sql server funciona perfeitamente !!!! Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Fevereiro 24, 2010 Entendi Outra pergunta, esse código que você postou você executa por onde ? Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Fevereiro 24, 2010 Comente a linha que faz o insert no banco e imprima a variavel abaixo em algum lugar, pode ser na tela. INSERT_BLOCO O que seria isso @NOME? De onde vem? Compartilhar este post Link para o post Compartilhar em outros sites
daianyyy 0 Denunciar post Postado Fevereiro 24, 2010 Olá pessoal esse é meu código ...esperam que entendam ....rs public Funcionarios Find(string codigo) { DbParameter par = GenericDB.criaParameter("@CODIGO", DbType.Int16, codigo);//passa paramentro para a sql try { //Executando a transação passando a conexão,o tipo do comando, o T-SQL e os parametros criados acima DataTable dt = DbHelper.ExecuteDataset(ConnectionDB.ConnectionString, CommandType.Text, Statements.SELECT_FUNC_WHERE, par).Tables[0]; //Criando o objeto da classe model para retorno do método Funcionarios funcionario=new Funcionarios(); funcionario.Codigo=Convert.ToInt16(dt.Rows[0]["CODIGO"]); funcionario.Cpf=dt.Rows[0]["CPF"].ToString(); funcionario.Nome=dt.Rows[0]["NOME"].ToString(); funcionario.Telefone=dt.Rows[0]["TELEFONE"].ToString(); funcionario.Email=dt.Rows[0]["EMAIL"].ToString(); funcionario.Endereco=dt.Rows[0]["ENDERECO"].ToString(); funcionario.Cidade=dt.Rows[0]["CIDADE"].ToString(); funcionario.Cep=dt.Rows[0]["CEP"].ToString(); funcionario.Estado=dt.Rows[0]["ESTADO"].ToString(); funcionario.Categoria=dt.Rows[0]["CATEGORIA"].ToString(); return funcionario; } catch (Exception ex) { return null; } } Essa é a sql que o código executa .... public const string SELECT_FUNC_WHERE = "SELECT " + " CODIGO, CPF, NOME, TELEFONE, EMAIL, ENDERECO, CIDADE, CEP, ESTADO, CATEGORIA , EPC " + "FROM " + " FUNCIONARIOS " + "WHERE " + " CODIGO = @CODIGO"; Com o @ funciona no Sql Server .....e com o ? funciona no Mysql public const string SELECT_FUNC_WHERE = "SELECT " + " CODIGO, CPF, NOME, TELEFONE, EMAIL, ENDERECO, CIDADE, CEP, ESTADO, CATEGORIA , EPC " + "FROM " + " FUNCIONARIOS " + "WHERE " + " CODIGO = ?"; Mas eu queria uma maneira que funcionasse nos dois ...senaum terei que fazer dois arquivos de consultas sql diferentes ..e eu tenho muitas consultas ...acho que seria inviável ....c tiver um jeito me ajudem ....espero ter explicado melhor agora .... Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Fevereiro 24, 2010 Eu não manjo realmente quase nada de .NET mas porque usar @ ou ? é da linguagem isso? Porque não usar a variavel diretamente? public const string SELECT_FUNC_WHERE = "SELECT " + " CODIGO, CPF, NOME, TELEFONE, EMAIL, ENDERECO, CIDADE, CEP, ESTADO, CATEGORIA , EPC " + "FROM " + " FUNCIONARIOS " + "WHERE " + " CODIGO = " + funcionario.getCodigo(); Estou supondo que o objeto funcionario existe e está preenchido corretamente e que exista um método chamado getCodigo que retorna o conteúdo de Codigo. Compartilhar este post Link para o post Compartilhar em outros sites
daianyyy 0 Denunciar post Postado Fevereiro 24, 2010 estou usando códigos em camadas entaum o sql está separado do código ...por isso preciso passar parametros para o sql ....se for mudar essa maneira de programar terei que mecher em todo o meu sistema !!!! Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Fevereiro 24, 2010 Tem como você imprimir na tela o que está retornando esta String ? Compartilhar este post Link para o post Compartilhar em outros sites
daianyyy 0 Denunciar post Postado Fevereiro 24, 2010 Não ..essa string é o comando sql que é executado pelo executedataset.... Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Fevereiro 24, 2010 Aqui explica como fazer: http://social.msdn.microsoft.com/Forums/pt-BR/adoptpt/thread/2cdd5858-3a45-4689-a042-512144b2ca8f Abraço! Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Fevereiro 24, 2010 Movido Modelagem / SQL http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Plataforma .NET Como eu disse isso é do .net e não sintaxe sql, em tempo de execução ele substitui os @ por valores informados pelo desenvolvedor. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
daianyyy 0 Denunciar post Postado Fevereiro 25, 2010 Eu sei como faz pra um e para outro ...só que eu queria saber c naum tem um jeito pra fazer igual nos dois ...senaum terei que criar duas sql de cada ....... Compartilhar este post Link para o post Compartilhar em outros sites