Difference between revisions of "FR/Documentation/BASIC Guide/Database Access"
m |
|||
Line 68: | Line 68: | ||
Une fois la connexion à la base de données établie, l'exemple crée un objet <tt>Statement</tt> via l'appel <tt>Connection.createObject</tt>. Cet objet <tt>Statement</tt> retourne ensuite l'objet <tt>ResultSet</tt> courant à l'aide de l'appel <tt>executeQuery</tt>. Le programme vérifie alors si l'objet <tt>ResultSet</tt> existe et, le cas échéant, parcourt les enregistrements de données à l'aide d'une boucle. Les valeurs requises (dans l'exemple, celles du champ <tt>CustomerNumber</tt>) retournent l'objet <tt>ResultSet</tt> à l'aide de la méthode <tt>getString</tt>, selon laquelle le paramètre 1 détermine que l'appel concerne les valeurs de la première colonne. | Une fois la connexion à la base de données établie, l'exemple crée un objet <tt>Statement</tt> via l'appel <tt>Connection.createObject</tt>. Cet objet <tt>Statement</tt> retourne ensuite l'objet <tt>ResultSet</tt> courant à l'aide de l'appel <tt>executeQuery</tt>. Le programme vérifie alors si l'objet <tt>ResultSet</tt> existe et, le cas échéant, parcourt les enregistrements de données à l'aide d'une boucle. Les valeurs requises (dans l'exemple, celles du champ <tt>CustomerNumber</tt>) retournent l'objet <tt>ResultSet</tt> à l'aide de la méthode <tt>getString</tt>, selon laquelle le paramètre 1 détermine que l'appel concerne les valeurs de la première colonne. | ||
− | {{ | + | {{Note|L'objet <tt>ResultSet</tt> de SDBC est comparable à l'objet <tt>Recordset</tt> de DAO et ADO, car il permet également l'accès itératif à une base de données.}} |
− | {{ | + | {{Note|L'accès à la base de données s'effectue en réalité dans {{OOo}} par l'intermédiaire d'un objet <tt>ResultSet</tt>. Celui-ci reflète le contenu d'une table ou le résultat d'une commande SQL-SELECT. Dans les versions précédentes, la navigation au sein des données s'effectuait à l'aide des méthodes résidentes telles que <tt>DataNextRecord</tt> fournies par l'objet <tt>ResultSet</tt> dans l'objet <tt>Application</tt>.}} |
== Méthodes de récupération des valeurs en fonction du type == | == Méthodes de récupération des valeurs en fonction du type == | ||
Line 118: | Line 118: | ||
− | {{ | + | {{Note|Un objet <tt>ResultSet</tt> contenant les propriétés <tt>READ_ONLY</tt> et <tt>SCROLL_INSENSITIVE</tt> correspond à un jeu d'enregistrements du type <tt>Snapshot</tt> dans ADO et DAO. }} |
Lorsque vous utilisez les propriétés | Lorsque vous utilisez les propriétés |
Latest revision as of 18:00, 6 July 2018
- SQL: un langage dédié aux requêtes
- Types d'accès aux bases de données
- Sources de données
- Accès aux bases de données
Pour accéder à une base de données, il faut y être connecté. Une voie de transfert est donc utilisée pour permettre la communication directe avec la base de données. Contrairement aux sources de données présentées dans la section précédente, la connexion à la base de données doit donc être rétablie à chaque fois que le programme est relancé.
Apache OpenOffice offre différentes manières d'établir des connexions à la base de données. Cet exemple illustre la connexion à une source de données existante.
Dim DatabaseContext As Object Dim DataSource As Object Dim Connection As Object Dim InteractionHandler as Object DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext") DataSource = DatabaseContext.getByName("Customers") If Not DataSource.IsPasswordRequired Then Connection = DataSource.GetConnection("","") Else InteractionHandler = createUnoService("com.sun.star.sdb.InteractionHandler") Connection = DataSource.ConnectWithCompletion(InteractionHandler) End If
Le code utilisé dans cet exemple commence par vérifier si la base de données est protégée par mot de passe. Dans le cas contraire, il crée la connexion à la base de données requise à l'aide de l'appel GetConnection. Les deux chaînes vides de la ligne de commande correspondent au nom et au mot de passe de l'utilisateur.
Si la base de données est protégée par mot de passe, l'exemple crée un objet InteractionHandler et ouvre la connexion à la base de données à l'aide la méthode ConnectWithCompletion. L'InteractionHandler garantit que Apache OpenOffice demande les données de connexion requises à l'utilisateur.
Itération de tables
Dans Apache OpenOffice, pour accéder à une table, on utilise généralement l'objet ResultSet. Un objet ResultSet est un type de marqueur indiquant un ensemble courant de données issues d'un volume de résultats, obtenu à l'aide de la commande SELECT.
L'exemple illustre l'interrogation des valeurs à partir d'une table de base de données à l'aide d'un objet ResultSet.
Dim DatabaseContext As Object Dim DataSource As Object Dim Connection As Object Dim InteractionHandler as Object Dim Statement As Object Dim ResultSet As Object DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext") DataSource = DatabaseContext.getByName("Customers") If Not DataSource.IsPasswordRequired Then Connection = DataSource.GetConnection("","") Else InteractionHandler = createUnoService("com.sun.star.sdb.InteractionHandler") Connection = DataSource.ConnectWithCompletion(InteractionHandler) End If Statement = Connection.createStatement() ResultSet = Statement.executeQuery("SELECT ""CustomerNumber"" FROM ""Customer""") If Not IsNull(ResultSet) Then While ResultSet.next MsgBox ResultSet.getString(1) Wend End If
Une fois la connexion à la base de données établie, l'exemple crée un objet Statement via l'appel Connection.createObject. Cet objet Statement retourne ensuite l'objet ResultSet courant à l'aide de l'appel executeQuery. Le programme vérifie alors si l'objet ResultSet existe et, le cas échéant, parcourt les enregistrements de données à l'aide d'une boucle. Les valeurs requises (dans l'exemple, celles du champ CustomerNumber) retournent l'objet ResultSet à l'aide de la méthode getString, selon laquelle le paramètre 1 détermine que l'appel concerne les valeurs de la première colonne.
L'objet ResultSet de SDBC est comparable à l'objet Recordset de DAO et ADO, car il permet également l'accès itératif à une base de données. |
Méthodes de récupération des valeurs en fonction du type
Comme le montre l'exemple de la section précédente, dans Apache OpenOffice, la méthode getString permet d'accéder au contenu des tables. Cette méthode retourne le résultat sous la forme d'une chaîne. Les méthodes get suivantes sont disponibles :
- getByte()
- prend en charge les types de données SQL dédiés aux nombres, aux caractères et aux chaînes.
- getShort()
- prend en charge les types de données SQL dédiés aux nombres, aux caractères et aux chaînes.
- getInt()
- prend en charge les types de données SQL dédiés aux nombres, aux caractères et aux chaînes.
- getLong()
- prend en charge les types de données SQL dédiés aux nombres, aux caractères et aux chaînes.
- getFloat()
- prend en charge les types de données SQL dédiés aux nombres, aux caractères et aux chaînes.
- getDouble()
- prend en charge les types de données SQL dédiés aux nombres, aux caractères et aux chaînes.
- getBoolean()
- prend en charge les types de données SQL dédiés aux nombres, aux caractères et aux chaînes.
- getString()
- prend en charge tous les types de données SQL.
- getBytes()
- prend en charge les types de données SQL dédiés aux valeurs binaires.
- getDate()
- prend en charge les types de données SQL dédiés aux nombres, aux chaînes, à la date et à l'heure.
- getTime()
- prend en charge les types de données SQL dédiés aux nombres, aux chaînes, à la date et à l'heure.
- getTimestamp()
- prend en charge les types de données SQL dédiés aux nombres, aux chaînes, à la date et à l'heure.
- getCharacterStream()
- prend en charge les types de données SQL dédiés aux nombres, aux chaînes et aux valeurs binaires.
- getUnicodeStream()
- prend en charge les types de données SQL dédiés aux nombres, aux chaînes et aux valeurs binaires.
- getBinaryStream()
- valeurs binaires.
- getObject()
- prend en charge tous les types de données SQL.
Dans tous les cas, le nombre de colonnes doit apparaître comme un paramètre dont les valeurs doivent être interrogées.
Variantes de l'objet ResultSet
La rapidité d'accès aux bases de données est souvent critique. Dans Apache OpenOffice, vous avez le choix entre plusieurs méthodes pour optimiser les objets ResultSets et ainsi contrôler la vitesse d'accès. En général, plus un objet ResultSet fournit de fonctions, plus son implémentation est complexe et plus lentes sont les fonctions.
un objet ResultSet, simple fournit les fonctions minimales. Il ne permet l'application de l'itération que vers l'avant, et pour les valeurs à interroger. Par conséquent, d'autres options de navigation plus complexes, telles que la modification des valeurs, ne sont pas incluses.
L'objet Statement utilisé pour créer l'objet ResultSet fournit des propriétés qui permettent d'agir sur les fonctions de l'objet ResultSet :
- ResultSetConcurrency (const)
- spécifications selon lesquelles les données peuvent être modifiées ou non (spécifications correspondant à com.sun.star.sdbc.ResultSetConcurrency).
- ResultSetType (const)
- spécifications relatives au type de ResultSets (spécifications correspondant à com.sun.star.sdbc.ResultSetType).
Les valeurs définies dans com.sun.star.sdbc.ResultSetConcurrency sont les suivantes :
- UPDATABLE
- ResultSet permet la modification des valeurs.
- READ_ONLY
- ResultSet ne permet pas les modifications.
Le groupe de constantes com.sun.star.sdbc.ResultSetConcurrency fournit les spécifications suivantes :
- FORWARD_ONLY
- ResultSet permet uniquement la navigation vers l'avant.
- SCROLL_INSENSITIVE
- ResultSet permet tout type de navigation ; les changements appliqués aux données d'origine ne sont toutefois pas notés.
- SCROLL_SENSITIVE
- ResultSet permet tout type de navigation ; les changements appliqués aux données d'origine modifient l'objet ResultSet.
Un objet ResultSet contenant les propriétés READ_ONLY et SCROLL_INSENSITIVE correspond à un jeu d'enregistrements du type Snapshot dans ADO et DAO. |
Lorsque vous utilisez les propriétés
UPDATEABLE et SCROLL_SENSITIVE de l'objet ResultSet's , l'objet ResultSet possède des fonctions d'étendue comparable à un objet Recordset de type Dynaset dans ADO et DAO.
Si un objet ResultSet est de type SCROLL_INSENSITIVE ou SCROLL_SENSITIVE, il prend en charge un ensemble de méthodes de navigation dans le stock de données. Les méthodes centrales sont les suivantes :
- next()
- déplacement vers l'enregistrement de données suivant.
- previous()
- déplacement vers l'enregistrement de données précédent.
- first()
- déplacement vers le premier enregistrement de données.
- last()
- déplacement vers le dernier enregistrement de données.
- beforeFirst()
- placement avant le premier enregistrement de données.
- afterLast()
- placement après le dernier enregistrement de données.
Toutes les méthodes retournent un paramètre booléen qui indique si la navigation s'est effectuée correctement ou non.
Les méthodes de test suivantes permettent de déterminer la position courante du curseur et retournent toutes une valeur booléenne :
- isBeforeFirst()
- ResultSet se situe avant le premier enregistrement de données.
- isAfterLast()
- ResultSet se situe après le premier enregistrement de données.
- isFirst()
- ResultSet est le premier enregistrement de données.
- isLast()
- ResultSet est le dernier enregistrement de données.
Modification des enregistrements de données
Si un objet ResultSet a été créé avec la valeur ResultSetConcurrency = UPDATEABLE, son contenu est modifiable. Ceci s'applique seulement tant que l'instruction SQL permet la réécriture des données dans la base de données (dépend du principe). Par exemple, ceci n'est pas possible pour les instructions SQL complexes avec des colonnes liées ou des valeurs cumulées.
Les méthodes Update de l'objet ResultSet permettent de modifier les valeurs. Ces méthodes sont structurées de la même manière que les méthodes get qui permettent de récupérer des valeurs. La méthode updateString, par exemple, permet l'écriture d'une chaîne.
Après modification, les valeurs doivent être transférées dans la base de données à l'aide de la méthode updateRow(). Si l'appel n'est pas effectué avant la prochaine commande de navigation, les valeurs sont perdues.
Toute erreur effectuée pendant les modifications peut être annulée à l'aide de la méthode cancelRowUpdates(). Cet appel n'est possible que si les données n'ont pas été réécrites dans la base de données à l'aide de la méthode updateRow().
Content on this page is licensed under the Public Documentation License (PDL). |