none
INSERIR EM BANCO DE DADOS COM C# RRS feed

  • Pergunta

  •  

    BOA TARDE A TODOS.

    ESTOU TENTANDO GRAVAR UMA INFORMAÇÃO NO BANCO DE DADOS COM C#.

    ESTOU UTILIZANDO O SEGUINTE CÓDIGO:

     

    instrucaoSQL = new OracleCommand("Insert Into Sudestefarma.CondicaoCobrancaEntrega(ID, DESCRICAO, EXISTEPRAZO, PRIORIDADE) Values (@ID, @DESCRICAO, @EXISTEPRAZO, @PRIORIDADE)", getConexaoAberta());

    instrucaoSQL.Parameters.Add(new OracleParameter("@ID", 12354545));

    instrucaoSQL.Parameters.Add(new OracleParameter("@DESCRICAO", "TESTE DO SISTEMA"));

    instrucaoSQL.Parameters.Add(new OracleParameter("@EXISTEPRAZO", 1));

    instrucaoSQL.Parameters.Add(new OracleParameter("@PRIORIDADE", 1));

    instrucaoSQL.ExecuteNonQuery();

     

    QUANDO PASSA PELO MÉTODO instrucaoSQL.ExecuteNonQuery(); O SISTEMA ME RETORNA A SEGUINTE MENSAGEM:

     

    ORA-01036: nome/número de variável inválido

     

    POR FAVOR, ALGUÉM PODE ME AJUDAR !!

     

    MUITO OBRIFADO !

     

    quinta-feira, 6 de setembro de 2007 15:56

Respostas

  • Passos,

     

    É porque você está passando os parametros como texto e não os valores dele propriamente dito.

     

    Você não pode fazer assim pois ele tentará inserir @id como valor e não o valor da variavel que não existe. 

    instrucaoSQL = new OracleCommand("Insert Into Sudestefarma.CondicaoCobrancaEntrega(ID, DESCRICAO, EXISTEPRAZO, PRIORIDADE) Values (@ID, @DESCRICAO, @EXISTEPRAZO, @PRIORIDADE)", getConexaoAberta());

     

    Voce pode fazer assim:

    instrucaoSQL = new OracleCommand("Insert Into Sudestefarma.CondicaoCobrancaEntrega(ID, DESCRICAO, EXISTEPRAZO, PRIORIDADE) Values ("+12354545+", "+"TESTE DO SISTEMA"+","+ 1+","+1 +")", getConexaoAberta());

     

    Assim você passa os valores (pode ser em variaveis)  e só executa o

    instrucaoSQL.ExecuteNonQuery(); sem os Parameters.Add()

     

    Agora você pode usar procedure e parametros.

     

    []'s

     

    Rafael Krisller

    quinta-feira, 6 de setembro de 2007 20:54

Todas as Respostas

  • Passos,

     

    É porque você está passando os parametros como texto e não os valores dele propriamente dito.

     

    Você não pode fazer assim pois ele tentará inserir @id como valor e não o valor da variavel que não existe. 

    instrucaoSQL = new OracleCommand("Insert Into Sudestefarma.CondicaoCobrancaEntrega(ID, DESCRICAO, EXISTEPRAZO, PRIORIDADE) Values (@ID, @DESCRICAO, @EXISTEPRAZO, @PRIORIDADE)", getConexaoAberta());

     

    Voce pode fazer assim:

    instrucaoSQL = new OracleCommand("Insert Into Sudestefarma.CondicaoCobrancaEntrega(ID, DESCRICAO, EXISTEPRAZO, PRIORIDADE) Values ("+12354545+", "+"TESTE DO SISTEMA"+","+ 1+","+1 +")", getConexaoAberta());

     

    Assim você passa os valores (pode ser em variaveis)  e só executa o

    instrucaoSQL.ExecuteNonQuery(); sem os Parameters.Add()

     

    Agora você pode usar procedure e parametros.

     

    []'s

     

    Rafael Krisller

    quinta-feira, 6 de setembro de 2007 20:54
  • Oi Rafael,

     

    Funcionou muito bem.

    Muito obrigado pela informação.

     

    Abraços !

     

    Watson Passos

    sexta-feira, 7 de setembro de 2007 17:08
  • TIVE O MESMO PROBLEMA AQUI NA EMPRESA USANDO ORACLECOMMAND, SUBSTITUA O @ POR :

     

    AQUI FUNCIONOU BLZ....

     

    quarta-feira, 7 de maio de 2008 14:13
  •  

    Mais assim eu não deixo de parametrizar as variaveis ... perdendo performance e passivel se não houve tratamento das variaveis poder ter um ataque de 'SQL Injection' ?!?

     

    Estou tendo o mesmo problema mais preciso que seja tudo parametrizado !

     

    Obrigado

    terça-feira, 13 de maio de 2008 19:42


  • Mais assim eu não deixo de parametrizar as variaveis ... perdendo performance e passivel se não houve tratamento das variaveis poder ter um ataque de 'SQL Injection' ?!?


    De fato, o uso de parâmetros é uma prática melhor de programação, promovendo melhor performance e mais segurança.


    Você já tentou usar ":" como o colega em cima falou?
    terça-feira, 20 de maio de 2008 13:59
  • Eu estava com este mesmo problema e substituindo por ":" como o amigo acima sugeriu rolou certinho!!! Valeu Roberto.
    terça-feira, 29 de junho de 2010 17:00
  • Vc é um fanfarrãum rafael krisller!!
    sexta-feira, 1 de abril de 2011 20:30