Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

daianyyy

SÌmbolo de parametros

Recommended Posts

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

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

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

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

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

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.