Trying to write to an SQL table an image, its name and description, and any foreign keys to allow me to subsequently search.
On execution I get conversion error from to Int 32 . But all the fields in the table are set correctly. What am I doing wrong?
private void BotaoGravar_Click(object sender, EventArgs e)
{
string sql = "select * from Banco_Imagens.tb_imagem";
MemoryStream memory = new MemoryStream();
// Verificar se alguma imagem foi seleccionada
if (bmp == null)
{
MessageBox.Show("Por favor seleccione uma imagem, antes de gravar o registo.");
}
else
{
bmp.Save(memory, ImageFormat.Bmp);
}
byte[] foto = memory.ToArray();
SqlCommand comando = new SqlCommand("insert into tb_imagem (imagem,nome_imagem,descr_imagem,iddiag,idlesao,idlesao1,idlesao2,idlesao3,idlesao4,ND) values (@imagem,@nome_imagem,@descr_imagem,@iddiag,@idlesao,@idlesao1,@idlesao2,@idlesao3,@idlesao4,@ND)", con);
SqlCommand cmdInteiro = new SqlCommand(sql, con);
SqlParameter imagem = new SqlParameter("@imagem", SqlDbType.VarBinary);
SqlParameter nome_imagem = new SqlParameter("@nome_imagem", SqlDbType.VarChar);
SqlParameter descr_imagem = new SqlParameter("@descr_imagem", SqlDbType.VarChar);
SqlParameter ND = new SqlParameter("@ND", SqlDbType.Int);
SqlParameter iddiag = new SqlParameter("@iddiag", SqlDbType.Int);
SqlParameter idlesao = new SqlParameter("@idlesao", SqlDbType.Int);
SqlParameter idlesao1 = new SqlParameter("@idlesao1", SqlDbType.Int);
SqlParameter idlesao2 = new SqlParameter("@idlesao2", SqlDbType.Int);
SqlParameter idlesao3 = new SqlParameter("@idlesao3", SqlDbType.Int);
SqlParameter idlesao4 = new SqlParameter("@idlesao4", SqlDbType.Int);
cmdInteiro.CommandType = CommandType.StoredProcedure;
comando.Parameters.AddWithValue("@imagem", SqlDbType.VarBinary);
comando.Parameters["@imagem"].Value = foto;
comando.Parameters.AddWithValue("@nome_imagem", SqlDbType.VarChar);
comando.Parameters["@nome_imagem"].Value = TextBoxNomeImagem.Text;
comando.Parameters.AddWithValue("@descr_imagem", SqlDbType.VarChar);
comando.Parameters["@descr_imagem"].Value = TextBoxDescrImagem.Text;
comando.Parameters.AddWithValue ("@iddiag", SqlDbType.Int);
comando.Parameters["@iddiag"].Value = TextBoxiddiag.Text;
comando.Parameters.AddWithValue ("@idlesao", SqlDbType.Int);
comando.Parameters["@idlesao"].Value = TextBoxidlesao.Text;
comando.Parameters.AddWithValue ("@idlesao1", SqlDbType.Int);
comando.Parameters["@idlesao1"].Value = TextBoxidlesao1.Text;
comando.Parameters.AddWithValue ("@idlesao2", SqlDbType.Int);
comando.Parameters["@idlesao2"].Value = TextBoxidlesao2.Text;
comando.Parameters.AddWithValue ("@idlesao3", SqlDbType.Int);
comando.Parameters["@idlesao3"].Value = TextBoxidlesao3.Text;
comando.Parameters.AddWithValue ("@idlesao4", SqlDbType.Int);
comando.Parameters["@idlesao4"].Value = TextBoxidlesao4.Text;
cmdInteiro.Parameters.AddWithValue("@ND", SqlDbType.Int);
cmdInteiro.Parameters["@ND"].Value = TextBoxND.Text;
//comando.Parameters.AddWithValue ("@idtipolesao", SqlDbType.Int);
//cmd.Parameters["@idtipolesao"].Value = TextBoxidtipolesao;
imagem.Value = foto;
nome_imagem.Value = TextBoxNomeImagem.Text;
descr_imagem.Value = TextBoxDescrImagem.Text;
iddiag.Value = (TextBoxiddiag.Text);
idlesao.Value = (TextBoxidlesao.Text);
idlesao1.Value = (TextBoxidlesao1.Text);
idlesao2.Value = (TextBoxidlesao2.Text);
idlesao3.Value = (TextBoxidlesao3.Text);
idlesao4.Value = (TextBoxidlesao4.Text);
ND.Value = (TextBoxND.Text);
//idtipolesao.Value = TextBoxidtipolesao.Text;
// Verificar se o Número de Doente só contém inteiros
if (Regex.IsMatch(TextBoxND.Text, @"^\D*$"))
{
//Show message and clear input.
MessageBox.Show("Por favor introduza só algarismos.");
TextBoxND.Clear();
}
else
{
comando.Parameters.Add (imagem);
comando.Parameters.Add(nome_imagem);
comando.Parameters.Add(descr_imagem);
comando.Parameters.Add(iddiag);
comando.Parameters.Add(idlesao);
comando.Parameters.Add(idlesao1);
comando.Parameters.Add(idlesao2);
comando.Parameters.Add(idlesao3);
comando.Parameters.Add(idlesao4);
comando.Parameters.Add(ND);
//comando.Parameters.Add(idtipolesao);
}
try
{
con.Open();
comando.ExecuteNonQuery();
MessageBox.Show("Imagem Gravada!");
PictureBox1.Image = null;
TextBoxNomeImagem.Text = "";
TextBoxDescrImagem.Text = "";
TextBoxiddiag.Text = "";
TextBoxDiagnostico.Text = "";
TextBoxLesao.Text = "";
TextBoxLesao1.Text = "";
TextBoxLesao2.Text = "";
TextBoxLesao3.Text = "";
TextBoxLesao4.Text = "";
TextBoxND.Text = "";
//TextBoxTipoLesao.Text = "";
//TextBoxiddiag.Text = "";
//TextBoxidlesao.Text = "";
//TextBoxidlesao1.Text = "";
//TextBoxidlesao2.Text = "";
//TextBoxidlesao3.Text = "";
//TextBoxidlesao4.Text = "";
////TextBoxidtipolesao.Text = "";
}
catch (Exception E)
{
MessageBox.Show(E.Message);
}
finally
{
con.Close();
}
}