0
I am developing a three-layer application, but there is a mistake when saving other data types that are not string type!
Follow the code below:
//Camada dados Método inserir produto!
public string Inserir(Dproduto Produto)
{
string resp = "";
SqlConnection SqlCon = new SqlConnection();
try
{
//codigo
SqlCon.ConnectionString = ConexaoBd.Cn;
SqlCon.Open();
SqlCommand SqlCmd = new SqlCommand();
SqlCmd.Connection = SqlCon;
SqlCmd.CommandText = "spinserir_produto";
SqlCmd.CommandType = CommandType.StoredProcedure;
SqlParameter ParId = new SqlParameter();
ParId.ParameterName = "@codigo";
ParId.SqlDbType = SqlDbType.Int;
ParId.Direction = ParameterDirection.Output;
SqlCmd.Parameters.Add(ParId);
//nome
SqlParameter ParNome = new SqlParameter();
ParNome.ParameterName = "@nome";
ParNome.SqlDbType = SqlDbType.VarChar;
ParNome.Size = 20;
ParNome.Value = Produto.nome;
SqlCmd.Parameters.Add(ParNome);
//finalidade
SqlParameter ParFinalidade = new SqlParameter();
ParFinalidade.ParameterName = "@finalidade";
ParFinalidade.SqlDbType = SqlDbType.VarChar;
ParFinalidade.Size = 50;
ParFinalidade.Value = Produto.finalidade;
SqlCmd.Parameters.Add(ParFinalidade);
//Unidade
SqlParameter ParUnidade = new SqlParameter();
ParUnidade.ParameterName = "@unidade";
ParUnidade.SqlDbType = SqlDbType.VarChar;
ParUnidade.Size = 50;
ParUnidade.Value = Produto.unidade;
SqlCmd.Parameters.Add(ParUnidade);
//CATEGORIA
SqlParameter ParIdCategoria = new SqlParameter();
ParIdCategoria.ParameterName = "@id_categoria";
ParIdCategoria.SqlDbType = SqlDbType.Int;
ParIdCategoria.Value = Produto.idCategoria;
SqlCmd.Parameters.Add(ParIdCategoria);
//FORNECEDOR
SqlParameter ParIdFornecedor = new SqlParameter();
ParIdFornecedor.ParameterName = "@id_fornecedor";
ParIdFornecedor.SqlDbType = SqlDbType.Int;
ParIdFornecedor.Value = Produto.idFornecedor;
SqlCmd.Parameters.Add(ParIdFornecedor);
SqlParameter ParPrecoVenda = new SqlParameter();
ParPrecoVenda.ParameterName = "@valor";
ParPrecoVenda.SqlDbType = SqlDbType.Money;
ParPrecoVenda.Size = 40;
ParPrecoVenda.Value = Produto.valorVenda;
SqlCmd.Parameters.Add(ParPrecoVenda);
SqlParameter ParPrecoCompra = new SqlParameter();
ParPrecoCompra.ParameterName = "@custo";
ParPrecoCompra.SqlDbType = SqlDbType.Money;
ParPrecoCompra.Size = 40;
ParPrecoCompra.Value = Produto.valorCusto;
SqlCmd.Parameters.Add(ParPrecoCompra);
SqlParameter ParQuantidade = new SqlParameter();
ParQuantidade.ParameterName = "@quantidade";
ParQuantidade.SqlDbType = SqlDbType.Int;
ParQuantidade.Value = Produto.quantidade;
SqlCmd.Parameters.Add(ParQuantidade);
//Executar
resp = SqlCmd.ExecuteNonQuery() == 1 ? "OK" : "Registro Não Foi Inserido!";
}
catch (Exception ex)
{
resp = ("Erro ao inserir" + ex.Message);
}
finally
{
if (SqlCon.State == ConnectionState.Open) SqlCon.Close();
}
return resp;
}
//Camada negocio metodo inserir
public static string Inserir(string nome,
string finalidade, string unidade, int idCategoria, int idFornecedor,
decimal valorVenda, decimal valorCusto, int quantidade)
{
Dproduto Obj = new CamadaDados.Dproduto();
Obj.Nome = nome;
Obj.Finalidade= finalidade;
Obj.Unidade = unidade;
Obj.IdCategoria = idCategoria;
Obj.IdFornecedor = idFornecedor;
Obj.ValorVenda = valorVenda;
Obj.ValorCusto = valorCusto;
Obj.Quantidade = quantidade;
return Obj.Inserir(Obj);
}
//Botao Salvar do meu formulario
private void btn_salvar_Click(object sender, EventArgs e)
{
try
{
string resp = "";
if (this.txtNome.Text == string.Empty)
{
MensagemErro("Preencha todos os campos!");
errorIcone.SetError(txtNome, "Insira o nome!");
}
else
{
if (this.eNovo)
{
resp = Nproduto.Inserir(this.txtNome.Text, this.cbMarca.Text, this.cbUnidade.Text, Int32.Parse(this.txtCategoria.Text),
Int32.Parse(this.txtFornecedor.Text),decimal.Parse(this.txtValor.Text),
decimal.Parse(this.txtCusto.Text), Int32.Parse(this.txtEstoque.Text));
}
}
}
}
//mensagem de Erro