none
Incorrect syntax near the keyword 'WHERE'. RRS feed

  • Pergunta

  • O que está errado ? ... Obrigado.

    Esse "d" é um objeto com os dados, eles não estão null, já debuguei.

    Incorrect syntax near the keyword 'WHERE'.

    string sql = "INSERT INTO Produtos(Imagem) VALUES(@imagem) WHERE Codigo = @codigo";

    SqlCommand comando = new SqlCommand(sql, con);

    comando.Parameters.Add(new SqlParameter("@codigo", d.Codigo));
    comando.Parameters.Add(new SqlParameter("@imagem", d.Imagem));

    con.Open();
    comando.ExecuteNonQuery();


    • Editado Rieth segunda-feira, 23 de setembro de 2013 19:17
    segunda-feira, 23 de setembro de 2013 19:16

Todas as Respostas

  • Rieth, ou use uma stored procedure e use os parâmetros senão use os valores direto no comando sql

    string sql = "INSERT INTO Produtos(Imagem) VALUES('"  + d.Imagem +  "') WHERE Codigo = " + d.Codigo;

    segunda-feira, 23 de setembro de 2013 19:28
  • Cara da o mesmo erro...
    segunda-feira, 23 de setembro de 2013 19:33
  • string sql = "INSERT INTO Produtos(Imagem) VALUES('"  + d.Imagem +  "') WHERE Codigo = " + d.Codigo;
    SqlCommand comando = new SqlCommand(sql, con);
    comando.CommandType = System.Data.CommandType.Text;

    con.Open();
    comando.ExecuteNonQuery();
    segunda-feira, 23 de setembro de 2013 19:37
  • Não funcionou também... 

    O estranho é que isso funciona:

    string sql = "INSERT INTO Produtos VALUES(@nome, @codigo, @data, @source, @imagem)";

    comando.Parameters.Add(new SqlParameter("@nome", d.Nome));
    comando.Parameters.Add(new SqlParameter("@codigo", d.Codigo));
    comando.Parameters.Add(new SqlParameter("@data", d.Data));
    comando.Parameters.Add(new SqlParameter("@source", d.Source));

    É algum problema nesse WHERE, não sei o que está errado, diz que é a Syntax, mas não consigo ver o erro..

    segunda-feira, 23 de setembro de 2013 19:48
  • Cara,

    Pode parecer obvio, mas exite o campo 'Codigo' na sua tabela 'Produtos'.

    Um jeito de debugar isso é vc jogar direto no T-SQL do seu SGDB.. provavelmente irá retornar o mesmo erro, logo, não é erro na aplicação e sim no select.


    segunda-feira, 23 de setembro de 2013 19:51
  • Qual o tipo do dado da coluna imagem?
    segunda-feira, 23 de setembro de 2013 19:52
  • Aff, eu sou muito burro.

    Tava tentando dar um INSERT INTO em uma row que já tinha dados, @!#@!$@!#!#$!%$&%$&$

    segunda-feira, 23 de setembro de 2013 19:57
  • Rieth, acho que você está se confundindo na montagem da query.

    no caso você está tentando realizar qual ação?

    é a inserção de um novo registro? se sim, não tem a cláusula WHERE, caso você esteja apenas gravando a imagem em um registro já existente, você deve utilizar um UPDATE e não um INSERT

    Tenta assim:

    string sql = "UPDATE Produtos SET Imagem = @imagem WHERE Codigo = @codigo";

    SqlCommand comando = new SqlCommand(sql, con);

    comando.Parameters.Add(new SqlParameter("@codigo", d.Codigo));
    comando.Parameters.Add(new SqlParameter("@imagem", d.Imagem));

    con.Open();
    comando.ExecuteNonQuery();

    Abraço!


    "A vida é um paraíso, mas os homens não o sabem e não se preocupam em sabê-lo." Fiodor Dostoievski

    segunda-feira, 23 de setembro de 2013 19:59
  • Não se preocupe , o importante é que você encontrou o erro.
    segunda-feira, 23 de setembro de 2013 20:01
  • É isso sim, já havia percebido ( depois de algumas tentativas fracassadas ) mas obrigado mesmo assim !
    segunda-feira, 23 de setembro de 2013 20:04