Faculté I&C, Claude Petitpierre, André Maurer Bases de données Javascript – SQL - LemanOS
Faculté I&C, Claude Petitpierre, André Maurer Libraries pour appels SQL depuis Javascript
Faculté I&C, Claude Petitpierre, André Maurer Table utilisée dans les exemples idvregioncepageannee 1Lavauxchasselas2005 3Chiantisangiovese2002 2Bourgognepinot noir2000
Faculté I&C, Claude Petitpierre, André Maurer Appels depuis Javascript (librairie database.js) var result = database.query("select * from vins") // au retour de la query: [ {idv:1,cepage:chasselas,region:Lavaux,annee:2005}, {id:2,cepage:sangiovese,annee:2002}, {id:3, region:Bourgogne} ] // Les champs nulls napparaissent pas dans lobjet.
Faculté I&C, Claude Petitpierre, André Maurer Accès aux champs [ {idv:1,cepage:chasselas...},{id:2,ccepage:...},{id:3} ] result[0].idv result[0].cepage result[0].region result[1].idv result[1].cepage result[1].region result[2].idv result[2].cepage result[2].region result.length lignes
Faculté I&C, Claude Petitpierre, André Maurer Accès aux champs [ {idv:1,cepage:chasselas...},{id:2,ccepage:...},{id:3} ] Si un champ, par exemple result[0].cepage, nest pas défini, on a typeof result[0].cepage == undefined Sil ny a quune ligne, elle est quand même placée dans [ ]
Faculté I&C, Claude Petitpierre, André Maurer Lecture dun objet dont les champs sont inconnus var result = [ {'a':2, 'b':3} ] for ( key in result [0] ) { alert( result [0] [key] ) }
Faculté I&C, Claude Petitpierre, André Maurer Traitement des erreurs var result try { result = database.query("select * from vins") } catch(e) { alert(Erreur: +e) return } // continue ici, en cas de succès if (result.length==0) { // pas de ligne retournée }
Faculté I&C, Claude Petitpierre, André Maurer Passage des paramètres Quatre façons de passer des paramètres à une commande SQL Concaténation de chaînes Remplacement du signe ? par une variable Remplacement du signe ? par un tableau Remplacement du signe ? par un objet
Faculté I&C, Claude Petitpierre, André Maurer Passage de paramètres par concaténation var an=2003, cep='chasselas' pas dans la chaîne var result = database.query( "select * from vins where annee="+an +" and cepage='"+ cep +"'") apostrophes encadrant la chaîne Chaîne produite : select * from vins where annee=2003 and cepage=chasselas
Faculté I&C, Claude Petitpierre, André Maurer Passage de paramètres par ? var an=2003, cep=chasselas var result = database.query( "select * from vins where annee=? and cepage=?", an, cep ) apostrophe Chaîne produite: select * from vins where annee=2003 and cepage=chasselas "
Faculté I&C, Claude Petitpierre, André Maurer Tableau de valeurs var data = [0, Barolo, nebbiolo, null] var result = database. query( 'insert into vins values (?), data ) Chaîne produite: insert into vins values (0, Barolo, nebbiolo, null) // les chaînes de data sont automatiquement entourées de
Faculté I&C, Claude Petitpierre, André Maurer Objet en paramètre var vin = {'region':'Bordeaux', 'cepage':'merlot'} var result = database. query( 'insert into vins set ?, vin ) Chaîne produite: insert into vins set region=Bordeaux cepage=merlot
Faculté I&C, Claude Petitpierre, André Maurer Points dinterrogation Il peut y avoir plusieurs ? A chaque ? doit correspondre un argument (il peut y en avoir plusieurs après la query) Un ? peut être remplacé par –un entier ou un réel –une string –un tableau –un objet Evidemment, lordre des paramètres doit correspondre aux ?, le système ne teste pas sil est pertinent
Faculté I&C, Claude Petitpierre, André Maurer Deux façons de construire un objet Javascript unVin = {idv:0, Valais, cepage:chasselas, annee:2004} var vin = { } vin.idv = 0 vin.region = Valais vin.cepage = chasselas vin.annee = 2004
Faculté I&C, Claude Petitpierre, André Maurer Insertion de sets create table unSet ( ensemble set ('aa', 'bb', 'cc') ) insert into unSet set ensemble='aa,cc' Attention, pas despaces
Faculté I&C, Claude Petitpierre, André Maurer Insertion de dates create table temps ( jourHeure datetime ) Date.prototype.sql = function () { return this.getFullYear() + "-" + (this.getMonth()+1) + "-" + this.getDate() + " " + this.getHours() + ":" + this.getMinutes() + ":" + this.getSeconds() } function execute () { try { database.query("insert into temps set jour=?", new Date().sql()) } catch (e) { alert(e + " >") } }
Faculté I&C, Claude Petitpierre, André Maurer Clé primaire générée var vin = {'region':'Bordeaux', 'cepage':'merlot'} var result = database.query( 'insert into vins set ?, vin ) (La base de données génère automatiquement la clé primaire. On peut lobtenir grâce à la commande suivante) idNb = database.last_insert_id()