Usuário com melhor resposta
Significado sql erro 2812

Pergunta
-
public void Alterar(ProdutoInformation produto)
{
SqlConnection conn = new SqlConnection();
try
{
conn.ConnectionString = Dados.StringDeConexao;
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "UPDATE Produtos SET nome=@nome, preco=@preco, estoque=@estoque WHERE codigo=@codigo;";
cmd.Parameters.AddWithValue("@codigo", produto.Codigo);
cmd.Parameters.AddWithValue("@nome", produto.Nome);
cmd.Parameters.AddWithValue("@preco", produto.Preco);
cmd.Parameters.AddWithValue("@estoque", produto.Estoque);cmd.Parameters.Add("@valorEstoque", SqlDbType.Int);
cmd.Parameters["@valorEstoque"].Direction = ParameterDirection.Output;
conn.Open();
cmd.ExecuteNonQuery();
decimal valorEstoque = Convert.ToDecimal(cmd.Parameters["@valorEstoque"]);
if (valorEstoque < 500)
{
throw new Exception("Atenção! Valor baixo no Estoque");
}
}
catch (SqlException ex)
{
throw new Exception("Servidor SQL Erro: " + ex.Number);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
conn.Close();
}
}
- Movido Tiago Michelini CardosoMVP sexta-feira, 13 de abril de 2012 17:50 Conteúdo em local incorreto (De:Dynamics CRM)
- Editado Anderson Bernardi domingo, 15 de abril de 2012 13:43
Respostas
-
Amigo, tente modificar esta linha:
decimal valorEstoque = Convert.ToDecimal(cmd.Parameters["@valorEstoque"]);
para
decimal valorEstoque = Convert.ToDecimal(cmd.Parameters["@valorEstoque"].Value);
http://stackoverflow.com/questions/290652/get-output-parameter-value-in-ado-net
Olavo Oliveira Neto
http://olavooneto.wordpress.com
Twitter @Olavooneto
Facebook Olavo Neto
Linkedin Olavo Neto
Se for útil marque como resposta e faça um Developer feliz :)- Marcado como Resposta Anderson Bernardi domingo, 10 de junho de 2012 14:58
Todas as Respostas
-
Anderson,
Creio que postou sua dúvida no local errado, estou movendo para o fórum de .NET.
Att,
Tiago Michelini Cardoso MVP - MCC - MCTS
https://tiagomcardoso.wordpress.com/- Editado Tiago Michelini CardosoMVP sexta-feira, 13 de abril de 2012 17:51
-
-
Este erro parece k tem a haver com o stored procedure...
Veja a explicacao do erro pela Microsoft por favor : http://msdn.microsoft.com/en-us/library/aa258751(v=sql.80).aspx
One word frees us of all the weight and pain of life: that word is love.
-
Achei um novo erro nesse mesmo código, consigo fazer a alteração certinho, mas ele acou esse erro:
System.Exception: Unabled to cast object of type System.Data.SqlClient.SqlParameter to type System.IConvertible.
cmd.Parameters["@valorEstoque"].Direction = ParameterDirection.Output; // Aqui que está om algum problema! não sei qual!
Alquem tem alguma ideia?
-
Amigo, tente modificar esta linha:
decimal valorEstoque = Convert.ToDecimal(cmd.Parameters["@valorEstoque"]);
para
decimal valorEstoque = Convert.ToDecimal(cmd.Parameters["@valorEstoque"].Value);
http://stackoverflow.com/questions/290652/get-output-parameter-value-in-ado-net
Olavo Oliveira Neto
http://olavooneto.wordpress.com
Twitter @Olavooneto
Facebook Olavo Neto
Linkedin Olavo Neto
Se for útil marque como resposta e faça um Developer feliz :)- Marcado como Resposta Anderson Bernardi domingo, 10 de junho de 2012 14:58