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.