2
Guys, I am creating a cash system and in the change the registration part the program gives the following error "The query parametrized @imagem bi expects the parameter @imagem that was not provided!". Funny thing is that when I put a new photo, it works normally! Already when I change only the name, this error appears!
Code below!
//O código abaixo é referente ao botão "Carregar Foto".
int novaFoto;
byte [] foto;
Bitmap bmp;
private void Button1_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
string caminho = openFileDialog1.FileName;
bmp = new Bitmap(caminho);
pictureBox1.Image = bmp;
novaFoto += 1;
}
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void textBox3_TextChanged(object sender, EventArgs e)
{
}
//O código abaixo é referente ao botão "Alterar Cadastro".
string nomeBanco;
private void button2_Click(object sender, EventArgs e)
{
if (novaFoto != 0)
{
MemoryStream memory = new MemoryStream();
bmp.Save(memory, ImageFormat.Bmp);
foto = memory.ToArray();
}
novaFoto = 0;
SqlCommand cad = new SqlCommand("update Produto set nome = @nome, codigo = @codigo, quant = @quant, preco = @preco, imagem = @imagem, fornecedor = @fornecedor where (nome = '"+nomeBanco+"')", con);
SqlParameter nome = new SqlParameter("@nome", SqlDbType.VarChar);
SqlParameter codigo = new SqlParameter("@codigo", SqlDbType.Int);
SqlParameter quant = new SqlParameter("@quant", SqlDbType.Int);
SqlParameter preco = new SqlParameter("@preco", SqlDbType.Float);
SqlParameter imagem = new SqlParameter("@imagem", SqlDbType.Binary);
SqlParameter fornecedor = new SqlParameter("@fornecedor", SqlDbType.VarChar);
//AQUIIIIIIIIIIIIIIIII antes tava foto;
nome.Value = textBox1.Text;
codigo.Value = int.Parse(textBox2.Text);
fornecedor.Value = textBox3.Text;
preco.Value = float.Parse(textBox4.Text);
quant.Value = int.Parse(textBox5.Text);
imagem.Value = foto;
cad.Parameters.Add(nome);
cad.Parameters.Add(codigo);
cad.Parameters.Add(quant);
cad.Parameters.Add(preco);
cad.Parameters.Add(imagem);
cad.Parameters.Add(fornecedor);
try
{
con.Open();
cad.ExecuteNonQuery();
MessageBox.Show("alterado com sucesso!");
pictureBox1.Image = null;
textBox1.Clear();
textBox2.Clear();
textBox4.Clear();
textBox5.Clear();
textBox3.Clear();
}
catch (Exception E)
{
MessageBox.Show(E.Message);
}
finally
{
con.Close();
pesquisar();
}
}
private void textBox6_KeyUp(object sender, KeyEventArgs e)
{
pesquisar();
}
completely ignoring code problems, the error being displayed is because you only fill in the variable
foto
whennovafoto != 0
(you could simply use a bool here), when it is =0, the variable is not assigned and has no value in the parameter. Still, if you passnull
, able to remove the photo from the database.– Rovann Linhalis