Tuto application VB.net pour remplir une BDD

Fermé
Alfred23 - 16 juin 2010 à 12:28
 Alfred23 - 16 juin 2010 à 16:08
Bonjour,

Je suis en train d'apprendre Visual studio. Pour cela je suis beaucoup de tutos et j'avance tranquillement, mais je cherche maintenant un tutoriel qui m'expliquerait comment faire une appli qui me permettrait de mettre des .pdf (qui sont sur mon disque dur) dans une BDD.

En fait, je voudrais pouvoir faire un bouton "parcourir", quand on clic dessus on ouvre une fenêtre BrowserDialog avec l'arborescence du disque dur. On choisi un .pdf. ça ramène le chemin d'accès au pdf dans la TextBox à côté du bouton parcourir. (jusque là, je sais faire !)
Mais je voudrais insérer le document .pdf qui a été choisi dans une base de données. Et là.... ça coince ! Je ne trouve pas de tuto qui m'expliquerait ça...

Est-ce que quelqu'un pourrait me dire où trouver ça ?

Merci d'avance.

Alfred





2 réponses

Krysstof Messages postés 1483 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 23 août 2010 294
16 juin 2010 à 12:46
tout dépend de ta base de données.

Pour stocker un ficher en base, il faut que ta base supporte les champs binaires (ou Binary Large OBject, BLOB)

pour stocker, le code est en c# mais la conversion en vb.net est facile :

tu crée un filestream et un tableau de byte
tu alimente le tableau de byte en lisant le contenu du fichier

FileStream st = new FileStream(@"C:\filename.jpg", FileMode.Open);
            byte[] buffer = new byte[st.Length];
            st.Read(buffer, 0, (int)st.Length);
            st.Close();


ensuite pour la requete d'envoi a la base, tu créer une sqlCommand du genre

SqlCommand cmd = new SqlCommand("UPDATE SomeTable SET image=@image WHERE ID = 1", conn);

@image est un paramètre que tu alimente de la manière suivante

cmd.Parameters.AddWithValue("@image", buffer);



puis tu exécute la commande

cmd.ExecuteNonQuery();




pour la réécriture de la base vers un fichier
SqlCommand command = new SqlCommand ("select PdfFile from Table", connection);

        byte[] buffer = (byte[]) command.ExecuteScalar ();
        connection.Close();

        FileStream fs = new FileStream(@"C:\test.pdf", FileMode.Create);
        fs.Write(buffer, 0, buffer.Length);
        fs.Close();



pour transformer du c# en VB, il faut juste enlever les ; a la fin des ligne et changer la déclaration des variable
"byte[] buffer" devient "Dim buffer as byte()" par exemple
5
Merci beaucoup Krysstof pour cette réponse précise !

Ma base de données est SQL Server et j'utilise VB. J'avais mis Varbinary(max) pour le type de données pour les .pdf donc je pense que c'est bon d'après ce que j'ai lu dans ta réponse.

Comme c'est un peu compliqué pour moi, je vais prendre le temps d'étudier ta réponse et je reviendrai dire si je m'en suis sortie ou non !

Cordialement,
Alfred
0