2010-12-04 36 views
0

Je suis nouveau sur WPF et la programmation en général. J'ai mis en place une table db factice avec un coumn étant IMAGE. J'ai maintenant fait une fenêtre WPF où en cliquant sur un bouton, un OpenFileDialog apparaît pour charger les fichiers jpg. Lorsque vous sélectionnez un fichier JPG et confirmez, l'image est affichée dans ma fenêtre wpf. Jusqu'à ici, les choses fonctionnent pour moi. Maintenant que l'image est chargée et affichée, je veux cliquer sur un autre bouton pour enregistrer cette image dans ma base de données SQL. Je n'ai aucune idée de comment faire cela, je suppose que je dois convertir l'image en code binaire, ou quelque chose? De plus je n'ai pas la moindre idée sur la façon de faire la requête sql (INSERT INTO tb_test VALUES ('Title', MYIMAGEOBJECT?); ??).WPF: Chargement du fichier JPG, enregistrement dans MS SQL DB

également, je devrais mentionner, que j'ai déjà une connexion à la DB, l'exécution des requêtes est déjà possible pour moi.

Le code que j'utilise jusqu'ici est ci-dessous, n'importe quel indice est apprécié!

private void openImage() 
     { 
      OpenFileDialog openFileDialog1 = new OpenFileDialog(); 
      openFileDialog1.InitialDirectory = @_imagepath; 
      openFileDialog1.Title = "Browse Image Files"; 
      openFileDialog1.CheckFileExists = true; 
      openFileDialog1.CheckPathExists = true; 
      openFileDialog1.DefaultExt = "jpg"; 
      openFileDialog1.Filter = "JPG files (*.jpg)|*.jpg|All files (*.*)|*.*"; 
      openFileDialog1.FilterIndex = 1; 
      openFileDialog1.RestoreDirectory = true; 

      Nullable<bool> result = openFileDialog1.ShowDialog(); 

      if (result==true) 
      { 
       //display file's path in txt box 
       _txtBxArtwork.Text = openFileDialog1.FileName; 

       // Convert string to image source 
       ImageSourceConverter imgConv = new ImageSourceConverter(); 
       ImageSource imageSource = (ImageSource)imgConv.ConvertFromString(openFileDialog1.FileName); 
       _imagePreview.Source = imageSource; 

       // set new image path 
       setNewImagePath(System.IO.Path.GetDirectoryName(openFileDialog1.FileName)); 
      } 
     } 

     private void setNewImagePath(String newpath) 
     { 
      _imagepath = newpath; 
     } 

Répondre

0

Vous devez enregistrer l'image en tant que binaire dans la base de données. Tout ce que vous avez à faire est de lire le fichier dans un tableau d'octets et de le conserver dans la base de données. Regardez l'exemple ci-dessous:

byte[] image = File.ReadAllBytes(@"C:\image.jpg"); 
using(SqlConnection sc = new SqlConnection()) 
{ 
    using(SqlCommand cmd = new SqlCommand(sc, "") 
    { 
     sc.ConnectionString = connectionString; 
     cmd.CommandText = "INSERT INTO TABLE(Title, ImageFile) VALUES(@Title, @Img)"; 
     cmd.Parameters.Add(new SqlParameter("@Title", "Image title")); 
     cmd.Parameters.Add(new SqlParameter("@Img", image)); 
     sc.Open(); 
     cmd.ExecuteNonQuery(); 
    } 
} 

Je n'ai pas VS sur cette machine, donc je n'ai pas pu tester le code, il peut y avoir des erreurs de syntaxe, mais espérons que vous résoudrez cela. De toute façon, si quelque chose ne va pas, faites le moi savoir.

+0

Merci beaucoup! Travaille pour moi! – beginner2k10