web-dev-qa-db-fra.com

Comment charger une image de SQL Server dans une boîte à images?

J'ai beaucoup essayé de trouver comment charger une image de SQL Server dans une boîte à images, mais je n'ai pas trouvé de matériel très utile.

J'ai d'abord enregistré l'image dans la base de données à l'aide de la requête suivante:

insert into imageTest (pic_id, pic)
values(1, 'D:\11.jpg')

Maintenant, je veux charger l'image dans une zone d'image.

7

Vous n'avez jamais téléchargé le contenu de l'image dans la base de données. C'est juste le nom du fichier.

Dites, par exemple, que vous avez un chemin de fichier avec lequel travailler (il semble que vous le fassiez, étant donné le contenu de la question). Dans votre application, vous importeriez ceci dans la base de données en respectant le format suivant:

byte[] image = File.ReadAllBytes("D:\\11.jpg");

SqlCommand sqlCommand = new SqlCommand("INSERT INTO imageTest (pic_id, pic) VALUES (1, @Image)", yourConnectionReference);
sqlCommand.Parameters.AddWithValue("@Image", image);
sqlCommand.ExecuteNonQuery();

N'oubliez pas que votre champ pic devra probablement changer de type de données. Un type courant pour cette information est VARBINARY.

La partie suivante lit le fichier dans un PictureBox. Pour cela, vous devrez SÉLECTIONNER les données:

SqlDataAdapter dataAdapter = new SqlDataAdapter(new SqlCommand("SELECT pic FROM imageTest WHERE pic_id = 1", yourConnectionReference));
DataSet dataSet = new DataSet();
dataAdapter.Fill(dataSet);

if (dataSet.Tables[0].Rows.Count == 1)
{
    Byte[] data = new Byte[0];
    data = (Byte[])(dataSet.Tables[0].Rows[0]["pic"]);
    MemoryStream mem = new MemoryStream(data);
    yourPictureBox.Image= Image.FromStream(mem);
} 

Et cela devrait être à ce sujet. Vous voudrez peut-être faire de meilleurs contrôles de sécurité, mais cela devrait vous aider à démarrer.

25
doctorless

regardez: http://msdn.Microsoft.com/en-us/library/ms175915.aspx

votre code changé:

insert into imageTest (pic_id, pic)
select 1, BulkColumn
FROM Openrowset( Bulk 'D:\11.jpg', Single_Blob) as img
2
rzjfr

Voir Muhammad, ce que nous faisons lorsque nous traitons des images dans des scénarios dynamiques est le suivant:

  1. Téléchargez l'image dans un répertoire d'application Web (comme/images/ou quelque chose)

  2. Nous stockons l'adresse URL dans le champ de base de données de la table.

  3. Placez l'endroit où vous souhaitez inclure l'image, définissez simplement la source de l'image sur le champ de la base de données et celle-ci sera affichée.

J'espère que cela t'aides

1
Pankaj Upadhyay

Vérifiez avec ce code:

SqlDataAdapter dAdapter = new SqlDataAdapter(new SqlCommand("SELECT Photo FROM Image", conn));
        DataSet dSet = new DataSet();
        dAdapter.Fill(dSet);

        if (dSet.Tables[0].Rows.Count == 1)
        {
            Byte[] data = new Byte[0];
            data = (Byte[])(dSet.Tables[0].Rows[0]["Photo "]);
            MemoryStream mem = new MemoryStream(data);
            PictureBoxName.Image = Image.FromStream(mem);
         }

Dans les données, mentionnez le nom de colonne de votre image. Changez le nom de votre Picturebox comme vous le mentionnez dans votre formulaire.

0
Karthik