Présentation de javascript appliqué des DataSets Table des
Transcription
Présentation de javascript appliqué des DataSets Table des
Présentation de javascript appliqué des DataSets Table des matières Présentation de javascript appliqué des DataSets.................................................................................1 Console.................................................................................................................................................1 Exemples basiques de manipulation des DataSets..........................................................................2 Création d'un DataSet, d'une DataTable, et de colonnes.............................................................2 Manipulation des données...........................................................................................................3 Sérialisation et schémas...................................................................................................................4 Chargement de données à partir d'une base SQL............................................................................5 Pilote...........................................................................................................................................5 Chargement des données.............................................................................................................5 Console La console permet de vérifier le fonctionnement de certains scripts ou de consulter des DataSets. La zone de gauche affiche le schéma du DataSet actuellement en mémoire de la console, la zone d'édition permet l'écriture de code javascript et/ou de requêtes SQL qui s'appliquent au DataSet en cours. La zone du bas affiche le résultat des « print » et la valeur de retour des scripts, ou le résultat des requêtes. Exemples basiques de manipulation des DataSets Création d'un DataSet, d'une DataTable, et de colonnes Il est possible de créer des DataSets en mémoire via du JavaScript ou du code java compilé. L'avantage du javascript étant la portabilité, la facilité d'écriture et de déploiement de traitements courts et simples (comme des tests, des extractions, des mises à jour en masse de fichiers, etc.) //Charge les API de base de manipulation des DataSets jdatasetfx.load(this); //Création d'un DataSet vide qui a pour nom DataSetTests var dataset = new DataSet("DataSetTests"); //Ajout d'une table « test » //le nommage de la table est déduit du nom de la propriété dataset.test = new DataTable(); println(dataset.test.name); //afiche "test" Définition des colonnes d'une table dataset.test.addColumn("NUMBER", INT); dataset.test.addColumn("VALUE"); dataset.test.addColumn("TEXT", STRING); dataset.test.getColumns().get("TEXT").setMaxLength(5); Ajout d'une clé primaire, qui en plus de garantir l'intégrité des données, ajoute des indexs dataset.test.setPrimaryKey("NUMBER"); Manipulation des données A présent, il est possible d'insérer de nouvelles lignes dans la table var row = dataset.test.newRow(); row.NUMBER = 10; row.VALUE = "hello world !"; dataset.test.add(row); L'accès aux propriétés peut se faire de trois manières println(row.VALUE); //Propriété javascript println(row["VALUE"]); //Syntaxe tableau indexé println(row[1]); //"1" étant l'indice de la colonne dans la table Les exceptions sont prises en compte try { dataset.test.addRow([10, "fail", null]); } catch (e) { println("clé primaire : " + e); //Erreur de clé primaire ! } A présent nous pouvons interroger notre DataSet //La sélection étant un tableau de DataRow extrait de la DataTable var selection = dataset.test.select("NUMBER > 50 AND NUMBER <= 75"); //Effectue une copie de la table dans un tableau var selection = dataset.test.select(); Il est également possible d'effectuer des requêtes complètes sur le DataSet via le moteur SQL intégré var var var var sql = "SELECT VALUE + ' test', NUMBER FROM test WHERE NUMBER >= 50"; parser = new SqlQueryParser(dataset); query = parser.parse(sql); reader = query.executeReader(); Une fois le DataReader obtenu, on peut effectuer une lecture classique : while (reader.read()) { println(reader.NUMBER); //syntaxes de propriétés javascript println(reader["NUMBER"]); //syntaxes de tableau indexé println(reader[1]); //ou avec des indices de colonnes } Sérialisation et schémas Nous pouvons enregistrer le schéma de notre DataSet dans un fichier. //Le schéma est au format XSD writeSchema(new XmlFormat(), dataset, "C:/test/schema.xml"); Le fichier obtenu respectant la présentation des schémas de DataSets générés par Visual Studio. Nous pouvons créer un DataSet en mémoire à partir d'un schéma quelconque //Le schéma est toujours au format XSD et a été généré par Visual Studio var dataset = loadSchema(new XmlFormat(), "C:/test/OPTElectricite.xsd"); //Si l'on souhaite créer un nouveau fichier de schéma writeSchema(new XmlFormat(), dataset "C:/test/Copie de OPTElectricite.xsd"); Après avoir obtenu un schéma, nous pouvons charger des données. Le fichier de données chargé respecte le schéma XSD qui a servi à l'initialisation du DataSet. //Lecture des données readData(new XmlFormat(), dataset, "C:/test/verif.xml") //Ecriture des données writeData(new XmlFormat(), dataset, "C:/test/verif.xml") Lorsqu'il s'agit de sérialiser les données, il est également possible d'engistrer en CSV, ou tout autre format défini par le développeur readData(new CsvFormat(), dataset, "C:/test/verif.csv") //L'API sait traiter en natif des formats csv avec préfixes de colonnes readData(new CsvFormat(CsvFormat.COLUMN_NAME), dataset, "C:/test/verif.csv") //Si l'on enregitre avec des indices de colonnes en préfixe writeData(new CsvFormat(CsvFormat.COLUMN_INDEX), dataset, "C:/test/verif.csv") On peut également charger un schéma ou des données à partir d'un webservice var dataset = loadSchema(new XmlFormat(), "http://localhost/OPTElectricite.xsd"); readData(new XmlFormat(), dataset, "http://localhost/verif.xml") Chargement de données à partir d'une base SQL Pilote En premier lieu, il est nécessaire de charger un pilote de base de données JDBC afin de pouvoir se connecter à la base. FILE étant le chemin du pilote SQL à charger (local ou via un webservice), DRIVER étant le nom du driver tel que défini dans la documentation (com.microsoft.sqlserver.jdbc.SQLServerDriver pour SQL Server par exemple) driverManager.loadDriver(FILE, DRIVER); Cette étape est inutile si le Driver est déjà chargé dans le programme (typiquement le cas du driver ODBC). Chargement des données A présent que le pilote de base de données est chargé, nous pouvons charger notre DataSet var dataset = new DataSet("dataset_base_sql"); dataset.add(loadTable(URL, "INTERV", "SELECT * FROM INTERV")); dataset.add(loadTable(URL, "VERIF", "SELECT * FROM VERIF WITH (NOLOCK)")); Notre DataSet chargé, nous pouvons maintenant enregistrer son shéma et/ou ses données pour une lecture future. writeSchema(new XmlFormat(), dataset "C:/test/Copie de OPTElectricite.xsd"); writeData(new CsvFormat(CsvFormat.COLUMN_INDEX), dataset, "C:/test/verif.csv")