Array
(
)

Problemas com DataSet ( Erro: Must declare the scalar variable)

Renato Castro
   - 19 mai 2012

Pessoal, quando executo esse código abaixo me retorna Erro: Must declare the scalar variable. Vocês podem me dizer o que eu estou errando?
#Código

try
{
   SqlConnection conn = new SqlConnection(@Server=.\SQLEXPRESS;Database=Northwind;User ID=sa;Password=milao);

   string sql = SELECT ProductID, ProductName FROM Products;

   SqlCommand cmd = new SqlCommand(sql, conn);

   DataSet ds = new DataSet();

   SqlDataAdapter adapter = new SqlDataAdapter(sql, conn);

   adapter.InsertCommand = new SqlCommand(INSERT INTO Products(ProductName) VALUES(@Produto), conn);

   adapter.InsertCommand.Parameters.Add(@Produtos, SqlDbType.NVarChar, 40, ProductName);

   adapter.Fill(ds, Produtos);

   DataRow linha = ds.Tables[Produtos].NewRow();
                linha[ProductName] = Novo Produto;
                ds.Tables[Produtos].Rows.Add(linha);

   int i = adapter.Update(ds, Produtos);
     if (i > 0)
     {
        lblMensagem.Text = Registro inserido com sucesso;
     }
           
   }
   catch (SqlException)
   {
        lblException.Text = Erro de SQL;
   }
   catch (InvalidOperationException)
   {
        lblException.Text = Comando Inválido;
   }
   catch (Exception ex)
   {
        lblException.Text = Erro ao executar o código  + ex;
   }
           
        }

Joel Rodrigues
   - 20 mai 2012

Boa tarde, Renato.
Aparentemente, você declarou o parâmetro @Produto e está tentando passar o valor para ele usando o nome ´´@ProdutoS´´. Ou seja, no seguinte bloco de código, na segunda linha, você deve substituir @Produtos (no plural) por @Produto:
#Código

adapter.InsertCommand = new SqlCommand(INSERT INTO Products(ProductName) VALUES(@Produto), conn);
adapter.InsertCommand.Parameters.Add(@Produtos, SqlDbType.NVarChar, 40, ProductName);


Faça essa modificação e poste aqui os resultados.