Stocker des images dans une base access

Stocker des images dans une base access - C#/.NET managed - Programmation

Marsh Posté le 11-07-2006 à 21:46:38    

:hello:  
 
Je cherche à stocker des images dans une BDD Access, mais j'i une erreur de type :  
'Le champ est trop petit pour accepter la quantité de données que vous voulez ajouter. Essayez d'insérer ou de coller moins de données'
 
Voici le code source de mon programme :

Code :
  1. private void button1_Click(object sender, EventArgs e)
  2.        {
  3.            try
  4.            {
  5.                OpenFileDialog ofdImage = new OpenFileDialog();
  6.                ofdImage.Title = "Selectionner l'image à inserer";
  7.                ofdImage.CheckFileExists = true;
  8.                ofdImage.InitialDirectory = Application.StartupPath;
  9.                ofdImage.Filter = "Fichiers image (*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|All files (*.*)|*.*";
  10.                ofdImage.FilterIndex = 1;
  11.                ofdImage.RestoreDirectory = true;
  12.  
  13.                if (ofdImage.ShowDialog() == DialogResult.OK)
  14.                {
  15.                    // Affiche l'image bitmap
  16.                    pbxImage.Image = (Image)new Bitmap(ofdImage.FileName);                  
  17.                }
  18.            }
  19.            catch (Exception ex)
  20.            {
  21.                MessageBox.Show(string.Concat("Erreur: ", ex.Message));
  22.            }
  23.        }


 

Code :
  1. try
  2.            {
  3.            //create the command object and store the sql query
  4.            // Tableau d'octets representant l'image au format jpeg
  5.            MemoryStream mstImage = new MemoryStream();
  6.            pbxImage.Image.Save(mstImage, System.Drawing.Imaging.ImageFormat.Jpeg);
  7.            Byte[] bytImage = mstImage.GetBuffer();
  8.  
  9.  
  10.            aConnection.Open();
  11.  
  12.            OleDbCommand cmdTestAccessImage = new OleDbCommand("INSERT INTO personne([pseudo], [nom], [prenom], [photo], [date_naiss], [mail]) VALUES (?, ?, ?, ?, ?, ?)", aConnection);
  13.            
  14.  
  15. //C'est ici que je remplis le parametre
  16.                cmdTestAccessImage.Parameters.Add(new OleDbParameter("photo", OleDbType.VarBinary, bytImage.Length,
  17.                ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, bytImage));
  18.  
  19.  
  20.            
  21.                cmdTestAccessImage.Parameters.Add(new OleDbParameter("pseudo", System.Data.OleDb.OleDbType.VarWChar, 50,
  22.                ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, this.tab1txtboxPseudo.Text));
  23.            
  24.                cmdTestAccessImage.Parameters.Add(new OleDbParameter("nom", System.Data.OleDb.OleDbType.VarWChar, 50,
  25.                ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, this.tab1txtBoxNom.Text));
  26.            
  27.                cmdTestAccessImage.Parameters.Add(new OleDbParameter("prenom", System.Data.OleDb.OleDbType.VarWChar, 50,
  28.                ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, this.tab1txtboxPrenom.Text));
  29.            
  30.                cmdTestAccessImage.Parameters.Add(new OleDbParameter("date_naiss", System.Data.OleDb.OleDbType.DBTimeStamp, 50,
  31.                ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, DateTime.Now.ToString()));
  32.            
  33.                cmdTestAccessImage.Parameters.Add(new OleDbParameter("mail", System.Data.OleDb.OleDbType.VarWChar, 50,
  34.                ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, "" ));
  35.  
  36.            cmdTestAccessImage.ExecuteNonQuery();
  37.            aConnection.Close();


 
 
Le champ 'photo' de la BDD est défini comme suit :
'Objet OLE'
 
 
Une idée d'où cela peux provenir ?


Message édité par didier1809 le 11-07-2006 à 21:48:05

---------------
.
Reply

Marsh Posté le 11-07-2006 à 21:46:38   

Reply

Marsh Posté le 12-07-2006 à 12:12:00    

Peut-être que ton champs est trop petit pour accepter la quantité de données que tu veux y ajouter  :)
 
C'est quoi la taille max de ton champ ? Et la taille de ton image ? (bytImage.Length)

Reply

Marsh Posté le 12-07-2006 à 22:12:31    

DAns access, quand tu met 'champ ole', tu n'a pas de choix de taille ;)
 
Pour la taille de l'image, je regarderai demain :)


---------------
.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed