none
Erro no meu código para gravar na tabela RRS feed

  • Pergunta

  • Aparece essa Mensagem: The variable name '@Video' has already been declared. Variable names must be unique within a query batch or stored procedure.

     

    SqlCommand

     

    meuComand = new SqlCommand("Inset into VideoUrl (Video, Descricao) values (@Video, @Desc) ", minhaCon);

    meuComand.Parameters.AddWithValue(

    "@Video", txtVideo1.Text);

    meuComand.Parameters.AddWithValue(

    "@Video", txtVideo2.Text);

    meuComand.Parameters.AddWithValue(

    "@Video", txtVideo3.Text);

    meuComand.Parameters.AddWithValue(

    "@Desc", txtDesc1.Text);

    meuComand.Parameters.AddWithValue(

    "@Desc", txtDesc2.Text);

    meuComand.Parameters.AddWithValue(

    "@Desc", txtDesc3.Text);

    minhaCon.Open();

    meuComand.ExecuteNonQuery();

    minhaCon.Close();

    minhaCon.Dispose();

    quarta-feira, 26 de maio de 2010 12:33

Respostas

  • Olá, Thiago.

    Isso que você está fazendo não é permitido não!

    A mensagem que aparece refere-se a você estar declarando duas vezes o mesmo parâmetro.

    Se quiser fazer desse jeito, terá que inserir um de cada vez, assim:

    meuComand = new SqlCommand("Inset into VideoUrl (Video, Descricao) values (@Video, @Desc) ", minhaCon);
    
    minhaCon.Open();
    
    meuComand.Parameters.AddWithValue("@Video", txtVideo1.Text);
    meuComand.Parameters.AddWithValue("@Desc", txtDesc1.Text);
    meuComand.ExecuteNonQuery();
    meuComand.Parameters.Clear();
    
    meuComand.Parameters.AddWithValue("@Desc", txtDesc2.Text);
    meuComand.Parameters.AddWithValue("@Video", txtVideo2.Text);
    meuComand.ExecuteNonQuery();
    meuComand.Parameters.Clear();
    
    meuComand.Parameters.AddWithValue("@Desc", txtDesc3.Text);
    meuComand.Parameters.AddWithValue("@Video", txtVideo3.Text);
    meuComand.ExecuteNonQuery();
    meuComand.Parameters.Clear();
    
    minhaCon.Close();
    
    minhaCon.Dispose();

    Entretando, acredito que uma refatoração no código seria agradável.

    Faça uma função: public void GravarVideo(string video, string descricao).

    Tornará seu código mais legível, escalável e fácil para manutenção.

    Abraços,


    Paulo Castilho - www.paulocastilho.com.br
    quarta-feira, 26 de maio de 2010 13:00

Todas as Respostas

  • Na verdade e o seguinte
    ou vc já passa os valores direto na string

    meuComand = new SqlCommand ( "Inset into VideoUrl (Video, Descricao) values (lalal, meu video) " , minhaCon);

     

    ou usando parameters vc teria que usar uma procedure

     

     

    veja o exemplo

    http://www.beansoftware.com/ASP.NET-Tutorials/ASP.NET-SQL-Server.aspx

    quarta-feira, 26 de maio de 2010 12:45
    Moderador
  • Olá, Thiago.

    Isso que você está fazendo não é permitido não!

    A mensagem que aparece refere-se a você estar declarando duas vezes o mesmo parâmetro.

    Se quiser fazer desse jeito, terá que inserir um de cada vez, assim:

    meuComand = new SqlCommand("Inset into VideoUrl (Video, Descricao) values (@Video, @Desc) ", minhaCon);
    
    minhaCon.Open();
    
    meuComand.Parameters.AddWithValue("@Video", txtVideo1.Text);
    meuComand.Parameters.AddWithValue("@Desc", txtDesc1.Text);
    meuComand.ExecuteNonQuery();
    meuComand.Parameters.Clear();
    
    meuComand.Parameters.AddWithValue("@Desc", txtDesc2.Text);
    meuComand.Parameters.AddWithValue("@Video", txtVideo2.Text);
    meuComand.ExecuteNonQuery();
    meuComand.Parameters.Clear();
    
    meuComand.Parameters.AddWithValue("@Desc", txtDesc3.Text);
    meuComand.Parameters.AddWithValue("@Video", txtVideo3.Text);
    meuComand.ExecuteNonQuery();
    meuComand.Parameters.Clear();
    
    minhaCon.Close();
    
    minhaCon.Dispose();

    Entretando, acredito que uma refatoração no código seria agradável.

    Faça uma função: public void GravarVideo(string video, string descricao).

    Tornará seu código mais legível, escalável e fácil para manutenção.

    Abraços,


    Paulo Castilho - www.paulocastilho.com.br
    quarta-feira, 26 de maio de 2010 13:00