Comment enregistrer une image dans une table access

Signaler
Messages postés
21
Date d'inscription
jeudi 18 mai 2006
Statut
Membre
Dernière intervention
26 juin 2006
-
Messages postés
21
Date d'inscription
jeudi 18 mai 2006
Statut
Membre
Dernière intervention
26 juin 2006
-
Bonjour


j ai une form et une classe (ou sont crées mes datasets et objtes pour sql)


depuis la form je passe mon image a la classe

<!-- BEGIN TEMPLATE: bbcode_code -->

Code :

_AjoutFilm.Fi_Jacquette = pctBoxCover.Image;

<!-- END TEMPLATE: bbcode_code -->

dans ma classe je récupere l image comme ceci

<!-- BEGIN TEMPLATE: bbcode_code -->

Code :

private Image fi_Jacquette;

public Image Fi_Jacquette
{
get { return fi_Jacquette; }
set { fi_Jacquette = value; }
}

<!-- END TEMPLATE: bbcode_code -->

Puis dans ma classe je veux inserer des données, et donc mon image dans une table


je fais ca

<!-- BEGIN TEMPLATE: bbcode_code -->

Code :

String _strSql = "INSERT INTO Films ( FI_Num, FI_Titre, FI_Annee_sortie, FI_Date_Parution, FI_Date_Achat, FI_Duree, FI_Zone, FI_Realisateur, FI_Studio, FI_Genre, FI_Resume, FI_Modif_Date, FI_Modif_Qui, FI_Jacquette)"
+ " VALUES ( @FI_Num, @FI_Titre, @FI_Annee_sortie, @FI_Date_Parution, @FI_Date_Achat, @FI_Duree, @FI_Zone, @FI_Realisateur, @FI_Studio, @FI_Genre, @FI_Resume, @FI_Modif_Date, @FI_Modif_Qui, @FI_Jacquette);";
Int32 RetourValeurInsertion = 0;

try
{
using (DbConnection cn = new OleDbConnection(methode.doConnectionString()))
{
using (DbCommand cmd = new OleDbCommand(_strSql, (OleDbConnection)cn))
{
cmd.CommandType = CommandType.Text;

.....

DbParameter FI_Jacquette = new OleDbParameter("@FI_Jacquette", OleDbType.Binary);
FI_Jacquette.Value = fi_Jacquette;
cmd.Parameters.Add(FI_Jacquette);

cn.Open();
cmd.ExecuteNonQuery();

cmd.CommandText = "SELECT @@IDENTITY";
RetourValeurInsertion = (Int32)cmd.ExecuteScalar();

cn.Close();

return RetourValeurInsertion;
}
}
}
catch (Exception e)
{

<!-- END TEMPLATE: bbcode_code -->

tou marche bien si je mets la patie image en commentaire sinon j ai une erreur

<!-- BEGIN TEMPLATE: bbcode_quote -->

Citation:
+ $exception {"Échec de la conversion de la valeur de paramètre d'un
Bitmap en un Byte[]."} System.Exception {System.InvalidCastException}

<!-- END TEMPLATE: bbcode_quote -->

Qui peut m aider car ca fait 1 mois que je butes la dessus


merci

3 réponses

Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
20
http://www.csharpfr.com/codes/INSERER-IMAGE-DANS-BASE-ACCESS_22790.aspx



                MemoryStream mstImage = new MemoryStream();
                pbxImage.Image.Save(mstImage, System.Drawing.Imaging.ImageFormat.Jpeg);
                Byte[] bytImage = mstImage.GetBuffer();

::|The S@ib|:: MVP C#.NET
Messages postés
21
Date d'inscription
jeudi 18 mai 2006
Statut
Membre
Dernière intervention
26 juin 2006

Bon


en faisant ca j ai plus de pb de compilation

<!-- BEGIN TEMPLATE: bbcode_code -->

Code :

MemoryStream mstImage = new MemoryStream();

Fi_Jacquette.Save(mstImage, System.Drawing.Imaging.ImageFormat.Jpeg);
Byte[] bytImage = mstImage.GetBuffer();

cmd.Parameters.Add(new OleDbParameter("@FI_Jacquette", OleDbType.VarBinary, bytImage.Length,
ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, bytImage));

<!-- END TEMPLATE: bbcode_code -->

mais ca plante la

<!-- BEGIN TEMPLATE: bbcode_code -->

Code :

cmd.ExecuteNonQuery();

<!-- END TEMPLATE: bbcode_code -->

avec comme message

<!-- BEGIN TEMPLATE: bbcode_quote -->

Citation:
+ $exception {"Type de données incompatible dans l'expression du
critère."} System.Exception {System.Data.OleDb.OleDbException}

<!-- END TEMPLATE: bbcode_quote -->

que faire ?
Messages postés
21
Date d'inscription
jeudi 18 mai 2006
Statut
Membre
Dernière intervention
26 juin 2006

C est bon, j ai changé l'ordre des params et la ca MARCHE

merci a tous