none
Update com varios campos RRS feed

  • Pergunta

  • Pessoal boa tarde,

     

    No grid o usuario clica em editar e durge todas as textbox cerregando os dados do banco,sendo assim o usuario vai alterar o que desejar e clicar sem salvar,porem o update nao consigo fazer com mais de um campo:

     

    ex: assim ele funciona com um campo so.:

     

    sb.Append("Update evento Set nm_envento='" + nome +"'");

     

    se eu fizer assim:

    sb.Append("Update evento Set nm_envento,data='" + nome +"','" + data + "'"); Nao funciona

     

    e fazendo assim:

     

    sb.Append("Update evento Set nm_envento='" + nome +"'");

    sb.Append("Update evento Set data='" + data + "'");

    sb.Append(" where id_evento = @id");

    cmd.Parameters.AddWithValue("id", idevento);

     

    a data ele salva no id correto o nome do evento ele salva em todos os registros.

     

    tentei dessa forma:

     

    sb.Append("UPDATE evento SET nm_envento=" + nome + ",data=" + data + ",horario=" + horario + ",local=" + local + ",estado=" + estado + ",cidade=" + cidade + ",endereco=" + endereco + ",mac_participantes=" + max + ",observacoes=" + obs + ",convocacao=" + convocacao + ",analise_critica=" + analise );

    sb.Append(" where id_evento = @id");

     

    mas gera o erro : Incorrect syntax near '00'.

    Como resolver esse problema??

     

    Muito Obrigado

    domingo, 2 de novembro de 2008 17:00

Respostas

Todas as Respostas

  • Boa Tarde,

     

    A melhor sugestão que eu posso lhe dar é abandonar a concatenação do comando com os valores de uma textbox. Além de mais lento, trás sérios problemas de SQL Injection e ainda por cima pode gerar os problemas que você está tendo. O melhor mesmo seria procurar utilizar a classe comando para passar todos os parâmentros (não somente os da cláusula WHERE). Quando isso é feito, os parâmetros já são automaticamente "traduzidos" para a interpretação do SQL Server. Da forma como está, provavelmente o erro ao final deve-se a coluna de horário.

     

    Se você não puder utilizar o command com parâmetros, tente exibir o valor de cmd.CommandText e poste aqui para visualizarmos onde está o erro.

     

    [ ]s,

     

    Gustavo

    domingo, 2 de novembro de 2008 19:49
  • Gustavo,mas como posso fazer isso tudo que me disse via código,possui algum exemplo??

     

    Muito obrigado,

    segunda-feira, 3 de novembro de 2008 16:44
  • Leandro,

     

        Segue um exemplo:

     

    Dim query As String = "Update TABELA set Campo1=@Campo1, Campo2= @campo2, CampoN=@CampoN Where Id=@id"

    Dim cmd As New SqlCommand(query, Connection)

    cmd.Parameters.AddWithValue("@Campo1", 1234)

    cmd.Parameters.AddWithValue("@Campo2", "TESTE")

    cmd.Parameters.AddWithValue("@CampoN", "TESTE")

    cmd.Parameters.AddWithValue("@id", CodigoID)

    cmd.ExecuteNonQuery()

     

         Recomendaria que você também procurasse mais informações sobre isso no forum específico de C# ou VB.NET...

    segunda-feira, 3 de novembro de 2008 17:04
  • Muito obrigado pela ajuda,desculpe pensei que estivesse no forum de asp.net.rs

     

    Mas muito obrigado pela ajuda.

     

     

     

    segunda-feira, 3 de novembro de 2008 17:52
  • Olá Leandro,

     

    Movi a Thread para um fórum mais apropriado.

    Quando puder classifique a resposta.

     

    [ ]s,

     

    Gustavo

     

    segunda-feira, 3 de novembro de 2008 17:58