none
Must declare the scalar variable RRS feed

  • Pergunta

  • Boa noite,

    Estou começando a usar o VS.NET com banco faz pouco tempo e tenho pouquissimo conhecimento. Eis o meu problema:

            private void btnVerifica_Click(object sender, EventArgs e)
            {
                SqlConnection conn = new SqlConnection(@"Data Source=oi-039b7c21ee0e\sqlexpress;Initial Catalog=Biblioteca;Integrated Security=True");
                SqlCommand comm = new SqlCommand("Select count(*) FROM [Biblioteca].[dbo].[Livro] Where Titulo = @txtTitulo"  And emprestimo = 'V'", conn);
    
                comm.Parameters.Add("titulo", SqlDbType.VarChar).Value = txtTitulo.Text;
                comm.Parameters.Add("@emprestimo", SqlDbType.VarChar).Value = "V";
              
    
                conn.Open();
                int i = (int)comm.ExecuteScalar();
    
                if (i > 0)
                {
                    MessageBox.Show("Tem o livro.");
                }
                else
                    MessageBox.Show("Não tem o livro.");
    
                conn.Close();  
            }

    Acontece o seguinte erro de execução: Must declare the scalar variable @txtTitulo.

    Grato.
    • Movido Gustavo Maia Aguiar quarta-feira, 24 de junho de 2009 13:59 ([Loc]From:SQL Server - Desenvolvimento Geral)
    quarta-feira, 24 de junho de 2009 02:41

Respostas

  • Bom Dia,

    Você esqueceu do @ na hora de declarar o parâmetro no método Add da coleção Parameters do objeto SqlCommand

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    Como importar e exportar imagens entre o SQL Server e o File System ? – Parte II
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!612.entry
    Classifique as respostas. O seu feedback é imprescindível
    quarta-feira, 24 de junho de 2009 07:49
  • Carlos,

          Seu post é mais indicado para ser colocado no Fórum de .NET, ADO.NET, mas, enfim... Você tem dois erros:
          - O parâmetro que você adiciona ("titulo") é diferente do parâmetro que a sua query está esperando ("@txtTitulo")
          - Você tem parâmetros demais.
     
          Ajustei o seu método, veja se funciona agora...

          Além disso, se você estiver utilizando Framework 3.5 você também pode utilizar o método .AddWithValue() da sua conexão que é mais simples de usar...

            private void btnVerifica_Click(object sender, EventArgs e)
            {
                SqlConnection conn = new SqlConnection(@"Data Source=oi-039b7c21ee0e\sqlexpress;Initial Catalog=Biblioteca;Integrated Security=True");
                SqlCommand comm = new SqlCommand("Select count(*) FROM [Biblioteca].[dbo].[Livro] Where Titulo = @txtTitulo And emprestimo = 'V'", conn);
    
                comm.Parameters.Add("@txtTitulo", SqlDbType.VarChar).Value = txtTitulo.Text;          
    
                conn.Open();
                int i = (int)comm.ExecuteScalar();
    
                if (i > 0)
                {
                    MessageBox.Show("Tem o livro.");
                }
                else
                    MessageBox.Show("Não tem o livro.");
    
                conn.Close();  
            }

    MCT / MCITP - Database Administrator MCITP - Database Developer 2008
    quarta-feira, 24 de junho de 2009 13:42

Todas as Respostas

  • Bom Dia,

    Você esqueceu do @ na hora de declarar o parâmetro no método Add da coleção Parameters do objeto SqlCommand

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    Como importar e exportar imagens entre o SQL Server e o File System ? – Parte II
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!612.entry
    Classifique as respostas. O seu feedback é imprescindível
    quarta-feira, 24 de junho de 2009 07:49
  • Carlos,

          Seu post é mais indicado para ser colocado no Fórum de .NET, ADO.NET, mas, enfim... Você tem dois erros:
          - O parâmetro que você adiciona ("titulo") é diferente do parâmetro que a sua query está esperando ("@txtTitulo")
          - Você tem parâmetros demais.
     
          Ajustei o seu método, veja se funciona agora...

          Além disso, se você estiver utilizando Framework 3.5 você também pode utilizar o método .AddWithValue() da sua conexão que é mais simples de usar...

            private void btnVerifica_Click(object sender, EventArgs e)
            {
                SqlConnection conn = new SqlConnection(@"Data Source=oi-039b7c21ee0e\sqlexpress;Initial Catalog=Biblioteca;Integrated Security=True");
                SqlCommand comm = new SqlCommand("Select count(*) FROM [Biblioteca].[dbo].[Livro] Where Titulo = @txtTitulo And emprestimo = 'V'", conn);
    
                comm.Parameters.Add("@txtTitulo", SqlDbType.VarChar).Value = txtTitulo.Text;          
    
                conn.Open();
                int i = (int)comm.ExecuteScalar();
    
                if (i > 0)
                {
                    MessageBox.Show("Tem o livro.");
                }
                else
                    MessageBox.Show("Não tem o livro.");
    
                conn.Close();  
            }

    MCT / MCITP - Database Administrator MCITP - Database Developer 2008
    quarta-feira, 24 de junho de 2009 13:42