Exemple utilisant l insertion, l affichage et la modification avec des données de type BLOB

Documents pareils
Introduction à ADO.NET

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

ADO.NET. Ado.net propose deux modes d'accès, le mode connecté et le mode déconnecté.

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

PHP 5. La base de données MySql. A. Belaïd 1

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

Gestion du cache dans les applications ASP.NET

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

BTS/CGO P10 SYSTEME INFORMATION Année

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Les bases de données

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

Introduction à JDBC. Accès aux bases de données en Java

Olivier Mondet

Java DataBaseConnectivity

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

IFT3030 Base de données. Chapitre 1 Introduction

1. Base de données SQLite

Stockage du fichier dans une table mysql:

PROJET 1 : BASE DE DONNÉES REPARTIES

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Développement d un logiciel de messagerie instantanée avec Dotnet (version simplifiée)

Paginer les données côté serveur, mettre en cache côté client

Application BdD et JDBC. Introduction 1/28. I Dans tout les cas, une seule problématique. I Quelques alternatives :

Construction d un EDD avec SQL 2008 R2. D. Ploix - M2 Miage - EDD - Création

SQL Historique

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

PDO : PHP Data Object 1/13

Présentation Windows Azure Hadoop Big Data - BI

Langage SQL : créer et interroger une base

Cours Bases de données 2ème année IUT

OpenPaaS Le réseau social d'entreprise

Création et Gestion des tables

Encryptions, compression et partitionnement des données

FileMaker 13. Guide de référence SQL

Projet de programmation (IK3) : TP n 1 Correction

A QUOI SERVENT LES BASES DE DONNÉES?

Exploiter les statistiques d utilisation de SQL Server 2008 R2 Reporting Services

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

TD : Requêtes SQL (BDR.TD2-1) INSA 3IF

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

Utilitaires méconnus de StrataFrame

1 Position du problème

Gestion des utilisateurs et de leurs droits

CREATION WEB DYNAMIQUE

Programmation système de commandes en C

Structure fonctionnelle d un SGBD

Modernisation, développement d applications et DB2 sous IBM i Technologies, outils et nouveautés Volubis.fr

Programmer en JAVA. par Tama

Bases de données et fournisseurs de contenu

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Programmation d application Bases de données avec Java

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

Les chaînes de caractères

Cours Bases de données 2ème année IUT

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

Construire une application marketing Facebook sur la plateforme Windows Azure

Cours Bases de données 2ème année IUT

Le Langage De Description De Données(LDD)

Historisation des données

Accès aux bases de données

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

Logiciel : GLPI Version : SYNCRHONISATION DE GLPI AVEC ACTIVE DIRECTORY. Auteur : Claude SANTERO Config. : Windows 2003.

Le hub d entreprise est une application de déploiement des applications mais aussi un outil de communication

.NET - Classe de Log

Bases de Données relationnelles et leurs systèmes de Gestion

TP3 1 : WEB APPLICATIONS AVEC ASP.NET

Cours SQL. Base du langage SQL et des bases de données

Bases de données relationnelles

Programmation Par Objets

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

A QUOI SERVENT LES BASES DE DONNÉES?

TP Programmation Java / JDBC / Oracle

Magasins et entrepôts de données (Datamart, data warehouse) Approche relationnelle pour l'analyse des données en ligne (ROLAP)

Java Licence Professionnelle CISII,

Un ordonnanceur stupide

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Rafraichissement conditionné d'une page en.net

Les BASES de DONNEES dans WampServer

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.

Comment Connecter une Base de Données MySQL via un Driver JDBC Avec OpenOffice.org

Bases de données élémentaires Maude Manouvrier

Dans l'article précédent, vous avez appris

Compétences Business Objects

Système de Gestion de Bases de Données Relationnelles. MySQL. Youssef CHAHIR

[BASE DE DONNEES MULTIMEDIA]

PHP. PHP et bases de données

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Transcription:

Exemple utilisant l insertion, l affichage et la modification avec des données de type BLOB Pour ajouter un enregistrement contenant une photo, on procède comme suit : 1- On chercher le fichier correspondant à la photo dans le disque. 2- On utilise des OracleParameters pour chaque colonne à insérer (nom, prenom, dateinscription, photo) 3- On affecte des valeurs à chaque paramètre. Pour les colonnes autre que photo, vous devez vous référez aux exemples précédents 4- Pour le paramètre correspondant à la colonne photo, vous devez lire le fichier image et la convertir en bytes. Oracle stocke les images sous forme de BLOB (Binary Large Object). 5- Envoyer la requête avec les paramètres comme d habitudes avec un OracleCommand.

public Form1() InitializeComponent(); OracleConnection conn = new OracleConnection(); private DataSet mondataset = new DataSet(); string sql1 = "SELECT NUMAD, NOM, PRENOM,photo FROM ETUDIANTSINFO"; string sql2 = "select numad, nom, prenom, dateinscription,photo from etudiantsinfo"; string nomfichier; private void Form1_Load(object sender, EventArgs e) try string chainedeconnexion = "Data Source = primogene; User Id = ussger; password = blabl"; conn.connectionstring = chainedeconnexion; conn.open(); MessageBox.Show(conn.State.ToString()); catch (Exception sqlconn) MessageBox.Show(sqlConn.Message.ToString());

Code du bouton Ajouter private void ajouter2_click(object sender, EventArgs e) try // la requête Sqlajout est paramétrée. Elle a 4 paramètres. //les paramètres pour Oracle et C # sont précédés de deux points : string sqlajout = " insert into etudiantsinfo" + " (numad, nom,prenom,dateinscription,photo) values "+ "(SeqEtu.nextval,:nom,:prenom,:dateinscription,:photo)"; // On déclare les paramètres pour chaque colonne de la requête // la séquence est pour le numéro. OracleParameter oranom = new OracleParameter(":nom", OracleDbType.Varchar2, 30); OracleParameter oraprn = new OracleParameter(":prenom", OracleDbType.Varchar2, 40); OracleParameter oradate = new OracleParameter(":dateinscription", OracleDbType.Date); OracleParameter oraphoto = new OracleParameter(":photo", OracleDbType.Blob); // On affecte les valeurs aux paramètres. oranom.value = textnom.text; oraprn.value = textprenom.text; oradate.value = dateins.value; //on fait du streaming (lecture en continue du fichier le résultat on le met dans une variable de type byte (octets). FileStream Streamp = new FileStream(nomFichier, FileMode.Open, FileAccess.Read); byte[] buffer1 = new byte[streamp.length]; Streamp.Read(buffer1, 0, System.Convert.ToInt32(Streamp.Length)); Streamp.Close(); // On affecte la valeur de buffer1 au paramètre oraphoto oraphoto.value = buffer1;

OracleCommand oraajout = new OracleCommand(sqlajout, conn); oraajout.commandtype = CommandType.Text; // En utilisant la propriété Prameters de OracleCommand, on spécifie les paramètres de la requête SQLajout. oraajout.parameters.add(oranom); oraajout.parameters.add(oraprn); oraajout.parameters.add(oradate); oraajout.parameters.add(oraphoto); // on execute la requete oraajout.executenonquery(); // on appelle la fonction dissocier pour pouvoir inserer une deuxième fois. // cette fonction est défine plus haut. dissocier(); catch (Exception exsqlajout) MessageBox.Show(exsqlajout.Message.ToString()); La méthode Stream.Read() Lit un bloc d'octets à partir du flux et écrit les données dans une mémoire tampon donnée. (Substitue Stream.Read(Byte[], Int32, Int32).) buffer offset count Type : System.Byte[] Tableau d'octets. Lorsque cette méthode est retournée, la mémoire tampon contient le tableau d'octets spécifié dont les valeurs comprises entre offset et (offset + count - 1) sont remplacées par les octets lus dans la source en cours. Type : System.Int32 Dans buffer, offset d'octet de base zéro à partir duquel commencer l'enregistrement des données lues dans le flux actuel. Type : System.Int32 Nombre maximal d'octets à lire à partir du flux actuel.

Code de la fonction qui permet de chercher un fichier image dans le disque : private string RechercherFichier() OpenFileDialog fimage = new OpenFileDialog(); fimage.title = "selectionner une image"; fimage.checkfileexists = true; fimage.initialdirectory = @":C\"; // fimage.initialdirectory = Application.StartupPath; fimage.filter = "Fichiers images (*.BMP;*.JPG;*.GIF) *.BMP;*.JPG;*.GIF All files (*.*) *.*"; fimage.filterindex = 1; fimage.restoredirectory = true; if (fimage.showdialog() == DialogResult.OK) nomfichier = fimage.filename; Bitmap bitmap1 = new Bitmap(nomFichier); else nomfichier = null; return nomfichier; Code du bouton associer à charger le fichier Image (photo trouvée par la fonction précédente) dans le contrôle PictureBox.(bouton Choisir Image)

private void ChercherImg_Click(object sender, EventArgs e) nomfichier = RechercherFichier(); if (nomfichier!= null) picphoto.image = System.Drawing.Image.FromFile(nomFichier); picphoto.imagelocation = nomfichier; Afficher une image provenant d une BD. Lorsque vous utilisez un DataSet, il suffit de faire un DataBindings sur le contrôle approprié (PictureBox) pour La fonction affichertxt(), permet de remplir le DataSet avec la requête sql2, en utilisant un OracleDataAdapter. Elle appelle ensuite la fonction lier() pour faire les DataBindings. private void affichertxt() try OracleDataAdapter Adapter2 = new OracleDataAdapter(sql2, conn); if (mondataset.tables.contains("resetudiants")) mondataset.tables["resetudiants"].clear(); Adapter2.Fill(monDataSet, "resetudiants"); Adapter2.Dispose(); // on apelle la fonction lier pour faire la liaison des données du DataSet avec les zones de Text. lier();

catch (Exception exsql2) MessageBox.Show(exsql2.Message.ToString()); private void lier() textnumad.databindings.add("text", mondataset, "resetudiants.numad"); textnom.databindings.add("text", mondataset, "resetudiants.nom"); textprenom.databindings.add("text", mondataset, "resetudiants.prenom"); dateins.databindings.add("text", mondataset, "resetudiants.dateinscription"); picphoto.databindings.add("image", mondataset, "resetudiants.photo", true); Code correspondant au bouton Lister : private void ListerTout_Click(object sender, EventArgs e) affichertxt();

Code de la fonction appelée par le bouton Vider les zones : Tout contrôle lié par un DataBindings doit être dissocié. private void dissocier() textnumad.databindings.clear(); textnom.databindings.clear(); textprenom.databindings.clear(); dateins.databindings.clear(); picphoto.databindings.clear(); // effacer le contenu textnumad.clear(); textnom.clear(); textprenom.clear(); dateins.value = DateTime.Now; picphoto.image = null; Compléments : Voici le code associé au bouton Modifier. Il utilise le OracleParameter comme dans une insertion. Le Fichier de type image en converti en tableau de Bytes. Le résultat est dans buffer1. C est buffer1 qu on affecte comme valeur au paramètre correspondant à la photo (oraphoto)

private void Modifier_Click(object sender, EventArgs e) try string sqlmodif = "update etudiantsinfo set nom =:nom,photo=:photo where numad=:numad"; OracleParameter oranum = new OracleParameter(":numad", OracleDbType.Int32); OracleParameter oranom = new OracleParameter(":nom", OracleDbType.Varchar2, 30); OracleParameter oraphoto = new OracleParameter(":photo", OracleDbType.Blob); // on affecte les valeurs aux paramètres. oranom.value = textnom.text; oranum.value = textnumad.text; //on fait du striming (lecture en continue du fichier le résultat est mis dans un tableau de bytes. FileStream Streamp = new FileStream(nomFichier, FileMode.Open, FileAccess.Read); byte[] buffer1 = new byte[streamp.length]; Streamp.Read(buffer1, 0, System.Convert.ToInt32(Streamp.Length)); Streamp.Close(); oraphoto.value = buffer1; OracleCommand oramodif = new OracleCommand(sqlmodif, conn); oramodif.commandtype = CommandType.Text; //En utilisant la propriété Prameteres de OracleCommand, on spécifie les paramètres de la requete sqlmodif. oramodif.parameters.add(oranom); oramodif.parameters.add(oraphoto); //remarquer que oranum est en dernier. oramodif.parameters.add(oranum); // on execute la requête oramodif.executenonquery(); // on appelle la fonction dissocier pour pouvoir inserer ou modifier une deuxième fois. dissocier(); catch (Exception exsqlmodif) MessageBox.Show(exsqlModif.Message.ToString());