Usuário com melhor resposta
INSERIR EM BANCO DE DADOS COM C#

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 !
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
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
-
-
-
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
-
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? -
-