Je ne suis pas en mesure d'insérer l'image dans la base de données.Ceci est mon exemple de code.Il est capable de sélectionner une image de mon ordinateur et l'afficher dans la boîte d'image.Une fois j'essaie de stocker l'image affichée Dans la zone d'image de la base de données, il est indiqué que la référence d'objet n'est pas définie sur une instance d'un objet.C# stocker une image à la base de données
Ceci est mon exemple de code.
namespace picutre_storage
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button2_Click(object sender, EventArgs e)
{
try
{
SqlConnection con = new SqlConnection
(@"User ID=sa;Password=password123;Initial Catalog=picuture;Persist Security Info=True;Data Source=ENMEDIA-EA6278E\ENMEDIA");
//I have used a table named "tblUsers" and fill the fields
SqlCommand cmd = new SqlCommand("INSERT INTO BLOBTest (BLOBData) VALUES (@BLOBData)", con);
//Save image from PictureBox into MemoryStream object.
MemoryStream ms = new MemoryStream();
pictureBox1.Image.Save(ms,ImageFormat.Bmp);
//Read from MemoryStream into Byte array.
Byte[] bytBLOBData = new Byte[ms.Length];
ms.Position = 0;
ms.Read(bytBLOBData, 0, Convert.ToInt32(ms.Length));
//Create parameter for insert statement that contains image.
SqlParameter prm = new SqlParameter("@BLOBData", SqlDbType.VarBinary, bytBLOBData.Length, ParameterDirection.Input, false,
0, 0, null, DataRowVersion.Current, bytBLOBData);
cmd.Parameters.Add(prm);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
catch (Exception ex)
{ MessageBox.Show(""+ex); }
}
private void button3_Click(object sender, EventArgs e)
{
try
{
//Getting The Image From The System
OpenFileDialog open = new OpenFileDialog();
open.Filter = "Image Files(*.jpg; *.jpeg; *.gif; *.bmp)|*.jpg; *.jpeg; *.gif; *.bmp";
if (open.ShowDialog() == DialogResult.OK)
{
pictureBox2.Image = new Bitmap(open.FileName);
}
}
catch (Exception)
{
throw new ApplicationException("Failed loading image");
}
}
est 2.There aucune façon de vérifier la taille de l'image avant de l'afficher dans l'image box.Thank à l'avance
Pour le point 2:. Je sauve dans une colonne de ma db même longueur d'image je sauve. – Marco
Toujours envelopper votre objet SqlConnection dans une instruction using ou bien vous aurez une fuite de pool de connexion :) :) using (var cnn = new SqlConnection (...)) {....} (dans le cas de votre code ci-dessus - vous rencontrerez des problèmes dès qu'une erreur se produira - votre connexion ne sera pas fermée) – Nathan
vous pouvez obtenir le tableau d'octets avec ms.ToArray(). Pas besoin de faire une allocation manuelle. –