Développer à l'aide ADOCE.
Introduction
Introduction à ADO et
ADOCE
Objets Recordset et
Field
Utilisation de
ADOCE
Résumé
Pour plus
d'informations
Introduction
Avec les objets Microsoft ADO, les applications clientes peuvent accéder aux données et les manipuler à partir d'un serveur de bases de données par l'intermédiaire d'un fournisseur de bases de données OLE. ADOCE fournit un sous-ensemble de ADO pour Windows CE. Il offre de nouvelles fonctionnalités pour bases de données au système d'exploitation Windows CE en autorisant un accès aux bases de données stockées localement sur un périphérique et il fournit la synchronisation des données avec une base de données en réseau.
ADOCE peut être utilisé avec PC de poche (H/PC) et la version 1.2 de l'Agenda de poche. Cet article présente une introduction à ADO et ADOCE, décrit les objets Recordset et Field et explique le fonctionnement de ADOCE.
Introduction à ADO et ADOCE
ADO est une interface Microsoft stratégique de haut niveau pour tous les types de données. Une application qui utilise ADO peut accéder aux données et les manipuler dans un serveur de bases de données par l'intermédiaire d'un fournisseur de bases de données OLE. Notez parmi les principaux avantages de ADO sa facilité d'utilisation, sa grande rapidité, un temps système en mémoire économique et un espace disque restreint. ADO offre un accès aux données performant et logique pour la création d'un client d'accès aux bases de données ou d'objet business de la couche centrale via une application, un outil, un langage ou même un navigateur Internet.
ADO est le composant principal de la stratégie de Microsoft Universal Data Access (UDA). Ce dernier fournit un accès très performant à des sources d'informations variées, relationnelles ou non relationnelles et une interface de programmation facile à utiliser, indépendante de l'outil et du langage. Ces technologies permettent aux entreprises d'intégrer des sources de données diverses, de créer des solutions faciles à maintenir et d'utiliser leurs meilleurs outils, applications et services de plate-forme.
ADOCE fournit un sous-ensemble de ADO pour le système d'exploitation Windows CE comprenant l'implémentation des objets Recordset et Field. ADOCE offre de nouvelles fonctionnalités de bases de données au système d'exploitation Windows CE en autorisant un accès aux bases de données stockées localement sur un périphérique. Il fournit une synchronisation des données par rapport à une base de données en réseau. ADOCE permet d'accéder au moteur de la base de données Windows CE à partir de tout environnement COM, tel que le kit de développement Microsoft Windows CE pour Microsoft Visual Basic® version 6.0.
ADOCE fournit les fonctionnalités suivantes :
- Une synchronisation automatique bidirectionnelle avec le
bureau hôte.
- De nouveaux types de données : double et
Booléen (comparés aux bases de données de
Windows CE).
- La prise en charge de SQL. La prise en charge
avancée de SQL, incluse dans ADOCE, est un sous-ensemble
du SQL ANSI (American National Standards Institute). Elle
ajoute de nouvelles fonctionnalités au moteur de bases
de données fournissant des noms de champs, plusieurs
clés de tri, un filtrage complexe, la création de
tables et d'index, la suppression et l'édition et des
possibilités de liaisons entre plusieurs tables.
- Accès au recordset.fieldname commun.
- Compatibilité du bureau ADO.
Objets Recordset et Field
Le contrôle ADOCE possède deux objets : Recordset et Field. Un jeu d'enregistrements est une table de base de données virtuelle, dont les champs et les lignes correspondent à un sous-ensemble de champs et de lignes de la véritable table de base de données du périphérique sur Windows CE. Lorsque vous ajoutez, supprimez ou modifiez les informations d'une ligne du jeu d'enregistrements, vous pouvez transférer ces modifications aux éléments correspondants de la table. Lorsque vous modifiez les données du jeu d'enregistrements, celui-ci stocke ces modifications en mémoire, vous permettant de les annuler avant que la base de données sous-jacente soit mise à jour. ADOCE ne gère pas la mise à jour par lots. Les données ne peuvent être modifiées que dans une seule ligne à la fois, mais ne peuvent pas être validées dans la base de données sous-jacente.
Le tableau suivant présente les méthodes prises en charge par l'objet Recordset :
| Méthode | Description |
| AddNew | Insère une nouvelle ligne dans le jeu d'enregistrements. |
| CancelUpdate | Annule les modifications en mémoire. |
| Clone | Duplique un jeu d'enregistrements. |
| Close | Ferme un jeu d'enregistrements. |
| Delete | Supprime une ligne du jeu d'enregistrements. |
| GetRows | Renvoie les données stockées dans le jeu d'enregistrements. |
| Move | Déplace le pointeur vers la ligne active du jeu d'enregistrements. |
| MoveFirst | Active la première ligne. |
| MoveLast | Active la dernière ligne. |
| MoveNext | Déplace le pointeur de la ligne active à la ligne suivante. |
| MovePrevious | Déplace le pointeur de la ligne active à la ligne précédente. |
| Open | Définit et ouvre les jeux d'enregistrements ; exécute les commandes SQL. |
| Supports | Détermine si le jeu d'enregistrements gère certaines fonctionnalités. |
| Update | Valide les modifications en mémoire et met à jour la table courante. |
Le tableau suivant présente les propriétés prises en charge par l'objet Recordset :
| Propriété | Description |
| AbsolutePage | Spécifie la page à déplacer pour un nouvel enregistrement courant. |
| AbsolutePosition | Spécifie la position ordinale d'un objet de l'enregistrement courant Recordset. |
| Activeconnection | Établit la connection à la base de données courante. Toujours une chaîne de longueur zéro (""). Pour H/PC exécutant le logiciel Pro Edition, le nom du fichier cdb |
| BOF | Indique si la position de l'enregistrement courant est avant le premier enregistrement dans l'objet Recordset. |
| Bookmark | Spécifie un signet qui identifie de manière unique un enregistrement dans l'objet Recordset. |
| CacheSize | Spécifie le nombre d'enregistrements d'un objet Recordset mis en cache localement dans la mémoire. |
| CursorType | Indique le type de curseur utilisé dans un objet Recordset. |
| EditMode | Indique l'état d'édition de l'enregistrement courant. |
| EOF | Indique que la position de l'enregistrement courant se situe après le dernier enregistrement dans un objet Recordset. |
| LockType | Indique le type de verrou placé sur les enregistrements pendant l'édition. |
| PageCount | Indique le nombre de pages de données contenues dans l'objet Recordset. |
| PageSize | Indique le nombre d'enregistrements constituant une page dans le jeu d'enregistrements. |
| RecordCount | Renvoie une valeur de type Long indiquant le nombre d'enregistrements courants dans un objet Recordset. |
| Source | Indique la source des données dans un objet Recordset ; instruction SQL ou nom de table. |
Les objets Field ne doivent pas être créés directement car ils n'existent que dans le contexte d'un jeu d'enregistrements existant. Utilisez la fonction Set pour vous référer à un objet Field spécifique. L'objet Field n'a ni méthode ni événement. À l'exception de Value, toutes les autres propriétés sont en lecture seule.
Le tableau suivant présente les propriétés prises en charge par l'objet Field :
| Propriété | Description |
| ActualSize | Indique la longueur réelle, en octets, d'une valeur de champ. |
| Attributes | Renvoie une valeur indiquant une ou plusieurs caractéristiques d'un objet Field. |
| DefinedSize | Utilisé pour déterminer les capacités de données d'un objet Field. Il renvoie la taille définie, en caractères, du champ Compare avec ActualSize, qui renvoie la taille en octets. |
| Name | Renvoie le nom d'un champ. |
| Type | Indique le type de données d'un objet Field. |
| UnderlyingValue | Indique la valeur courante d'un objet Field dans la base de données. |
| Value (default) | Indique la valeur courante d'un objet Field dans le jeu d'enregistrements. |
La collection Fields contient un objet Field pour chaque colonne du jeu d'enregistrements. Vous pouvez vous référer à un champ particulier par le nom ou par l'index. La collection Fields gère la propriété Count, qui indique le nombre de champs contenus dans un jeu d'enregistrements.
Utilisation de ADOCE
Avec ADOCE, vous pouvez déplacer des bases de données vers et à partir de votre périphérique sur Windows CE. Vous pouvez également créer ou accéder aux bases de données du périphérique ou d'un émulateur d'ordinateur de bureau. Les sections suivantes décrivent le fonctionnement de ADOCE et présentent des exemples. Notez que ControlConsts.bas est installé dans \Program Files\Microsoft Visual Studio\VB98\VBCE\Samples. Ce fichier contient les définitions pour les énumérations dans ADOCE et d'autres contrôles.
Logiciels requis
Pour utiliser le contrôle ADOCE, vous avez besoin des logiciels suivants :
- Microsoft Windows CE Services version 2.1 ou
ultérieure
- Microsoft Windows NT® Workstation
version 4.0 ou Windows 95 ou 98
- Microsoft Windows CE Platform SDK pour le
périphérique que vous utilisez
- Microsoft Visual Basic, Édition Professionnelle
version 6.0, système de développement ou
Microsoft Visual Basic, Édition Entreprise
version 6.0
- Kit de développement Microsoft Windows CE pour Visual Basic version 6.0
Déplacement des bases de données entre le bureau et le périphérique
Vous pouvez déplacer des tables de bases de données entre un ordinateur de bureau et un périphérique sur Windows CE. Les bases de données stockées dans l'ordinateur de bureau sont au format Microsoft Access®. Les bases de données du périphérique sont stockées dans des tables standard pour Windows CE qui comportent des informations supplémentaires ajoutées aux tables du système ADOCE .
Pour copier une base de données d'un ordinateur de bureau vers un périphérique
- Connectez le périphérique à l'ordinateur
de bureau et ouvrez la fenêtre Périphériques
mobiles.
- Dans le menu Outils de la fenêtre
Périphériques mobiles, choisissez Importer les
tables de la base de données. La boîte de
dialogue Ouvrir apparaît.
- Sélectionnez le fichier Access.mdb contenant les
tables que vous voulez importer. La boîte de dialogue
Importation de la base de données vers le
périphérique mobile apparaît avec une
liste des tables et champs de la base de données.
- Cochez les cases des tables et champs que vous voulez
importer, et désactivez celles des tables que vous ne
voulez pas importer.
- Pour les tables que vous souhaitez limiter en lecture
seule, activez la case à cocher Lecture
seule.
- Si vous voulez remplacer des tables du
périphérique portant le même nom que celles du
fichier .mdb, cochez la case Écraser des
tables et/ou des données existantes.
- Cliquez sur OK pour commencer la conversion.
Pour copier une base de données du périphérique vers l'ordinateur de bureau
- Connectez le périphérique à l'ordinateur
de bureau et ouvrez la fenêtre Périphériques
mobiles.
- Dans le menu Outils de la fenêtre
Périphériques mobiles, sélectionnez Exporte
les tables de la base de données. La boîte de
dialogue Exportation du périphérique mobile vers
la base de donnéesExportation du périphérique
mobile vers la base de données apparaît,
présentant les tables ADOCE du périphérique
connecté.
- Choisissez le bouton Parcourir pour
sélectionner un fichier Access.mdb. Vous pouvez
également entrer le chemin et le nom du fichier dans la
boîte Emplacement. Si le fichier n'existe pas,
ADOCE le crée pour vous.
- Activez les cases à cocher des tables que vous
voulez exporter et désactivez celles que vous ne voulez
pas exporter. ADOCE met toutes les tables
sélectionnées dans le même fichier .mdb.
- Si vous voulez remplacer des tables du .mdb portant le
même nom qu'une table ADOCE sélectionnée,
cochez la case Écraser des tables et/ou des
données existantes.
- Cliquez sur OK pour commencer la conversion.
Pour contrôler par programme la conversion de fichiers .mdb vers des tables ADOCE et des tables ADOCE vers des fichiers .mdb, vous pouvez utiliser respectivement les fonctions DesktopToDevice et DeviceToDesktop. Le comportement de ces fonctions est similaire à celui des boîtes de dialogue Importation de la base de données vers le périphérique mobile et Exportation du périphérique mobile vers la base de données, à l'exception du choix de l'utilisateur qui n'apparaît pas dans les boîtes de dialogue. Toutes les barres de progression apparaissent, présentant l'état du transfert. Un renvoi d'erreur ne provoque pas l'affichage automatique du journal. Par contre, une valeur d'erreur, HRESULT, est renvoyée par la fonction, et l'application qui appelle peut prendre les mesures appropriées.
Vous pouvez spécifier les champs à convertir avec la fonction DesktopToDevice. Toutefois, avec la fonction DeviceToDesktop, tous les champs d'une table sont convertis par défaut.
L'exemple de code suivant présente une application Visual Basic simple, qui copie un sous-ensemble de la base de données Comptoir incluse dans Visual Basic vers le périphérique sans aucune synchronisation, mais en écrasant toutes les tables Comptoir existantes. La table Employés est envoyée en lecture seule, alors que la table Produits peut être mise à jour.
Declare Function DesktopToDevice Lib "c:\program files\windows ce services\adofiltr.dll" _
(ByVal desktoplocn As String, _
ByVal tablelist As String, _
ByVal sync As Boolean, _
ByVal overwrite As Integer, _
ByVal devicelocn As String) As Long
result = DesktopToDevice ("c:\mydbs\nwind.mdb", _
"!Employees..Products.ID.Name.Quantity..", False, True, "")
If result <> 0 Then MsgBox "An error occurred transferring the data"
Création d'une table
Avant d'accéder aux données avec le contrôle ADOCE, vous devez disposer d'une table pour les stocker. L'exemple de code suivant présente la création d'une nouvelle table ADOCE dans le répertoire Bases de données d'un ordinateur de poche Édition Professionnelle.
Dim rs
Set rs = CreateObject("adoce.recordset")
rs.Open "create table mytable (firstfield text, secondfield integer)"
Set rs = Nothing
Comme les instructions SQL modifiant la structure d'une table laissent le jeu d'enregistrements fermé, vous ne pouvez pas lire ou écrire des données avant que celui-ci soit de nouveau ouvert.
Tri d'une table
Vous pouvez trier une table en utilisant l'instruction Order By avec ou sans index. Toutefois, le tri d'une base de données sans index est généralement plus lent que celui d'une base de données avec un index. L'exemple de code suivant présente le tri d'une base de données sans index. Il exige un objet ListBox nommé List1.
Dim rs
Set rs = CreateObject("ADOCE.RecordSet")
rs.open "select * from mytable order by firstfield desc", "", adOpenKeyset, adLockOptimistic
If rs.RecordCount > 0 Then
Do While Not rs.EOF
List1.Additem rs.Fields("firstfield").Value
rs.MoveNext
Loop
End If
rs.Close
set rs = Nothing
L'exemple de code suivant présente la création d'un index dans une base de données utilisé pour un tri plus rapide. Il exige un objet ListBox nommé List1.
Dim rs
Set rs = CreateObject("ADOCE.RecordSet")
rs.open "create index i1 on mytable (firstfield desc)"
rs.open "select * from mytable order by firstfield desc", "", adOpenKeyset, adLockOptimistic
If rs.RecordCount > 0 Then
Do While Not rs.EOF
List1.Additem rs.Fields("firstfield").Value
rs.MoveNext
Loop
End If
rs.Close
set rs = Nothing
Stockage et récupération d'informations
Pour ajouter, supprimer ou modifier les informations d'une base de données, vous devez modifier les valeurs par défaut de CursorType et LockType lors de l'ouverture du jeu d'enregistrements. L'exemple de code suivant présente le stockage d'informations dans une base de données :
Dim rs
Set rs = CreateObject("ADOCE.RecordSet")
rs.open "mytable", "", adOpenKeyset, adLockOptimistic
rs. Addnew
rs.fields("firstfield") = "ActiveX Data Objects"
rs.fields("secondfield") = 1.8
rs.Update
rs.Close
Set rs = Nothing
Si vous utilisez la méthode AddNew avec des paramètres, vous n'avez pas besoin d'utiliser la méthode Update dans la mesure où les modifications de la base de données sont faites automatiquement. L'exemple de code suivant présente l'utilisation de AddNew :
rs.Addnew "firstfield", "Windows CE"
Pour modifier un enregistrement plutôt que d'en créer un nouveau, procédez aux modifications des champs nécessaires et utilisez ensuite la méthode Update. Si vous utilisez Update avec des paramètres, les modifications sont automatiquement reportées dans la base de données. L'exemple de code suivant présente l'utilisation de Update :
rs.Update "firstfield", "ADOCE"
Après avoir stocké les données dans la base de données à l'aide de AddNew et de Update, vous pouvez vous servir de la propriété Value pour obtenir les informations stockées dans un champ. L'exemple de code suivant présente la récupération d'informations à partir d'une base de données ADOCE. Il exige un objet ListBox nommé List1.
Dim rs
Set rs = CreateObject("ADOCE.RecordSet")
rs.open "mytable", "", adOpenKeyset, adLockOptimistic
If rs.RecordCount > 0 Then
Do While Not rs.EOF
List1.Additem rs.Fields("firstfield").Value
rs.MoveNext
Loop
End If
rs.Close
set rs = Nothing
Distribution des applications ADOCE
Les composants d'une application ADOCE doivent être installés sur l'ordinateur de bureau ainsi que sur le périphérique. Pour distribuer une application ADOCE, vous pouvez modifier l'exemple d'application Setup inclus dans le kit de développement Microsoft Windows CE pour Visual Basic 6.0. Toutes les applications Setup de ADOCE doivent vérifier que Windows CE Services 2.1 ou ultérieur est installé et ajouter les références aux fichiers .cab de ADOCE aux fichiers AppMgr .ini de votre application.
Utilisation d'un ordinateur de poche exécutant l'Édition professionnelle
Cette section décrit des procédures supplémentaires pouvant être réalisées sur un ordinateur de poche (H/PC) exécutant Microsoft Windows CE, PC de poche Édition professionnelle, version 3.0.
Création d'une base de données
L'exemple de code suivant présente la création d'une base de données externe sur un H/PC exécutant le logiciel Édition professionnelle :
Dim rs
Set rs = CreateObject("adoce.recordset")
rs.Open "create database '\mydatabase.cdb'"
Set rs = Nothing
Extraction d'informations à partir d'un fichier .cdb
Si vous créez une base de données sur un H/PC exécutant le logiciel Édition professionnelle, vous pouvez accéder à ces données en transférant le chemin d'accès à la base de données aux paramètres de connection. Toutes les opérations pouvant être exécutées avec une chaîne de connection vide ("") peuvent être exécutées sur un fichier .cdb en modifiant la chaîne de connection. L'exemple de code suivant présente l'extraction d'informations à partir d'un fichier .cdb :
Dim rs
Set rs = CreateObject("ADOCE.RecordSet")
rs.open "mytable", "\mydatabase.cdb", adOpenKeyset, adLockOptimistic
If rs.RecordCount > 0 Then
Do While Not rs.EOF
List1.AddItem rs.Fields("firstfield").Value
rs.MoveNext
Loop
End If
rs.Close
set rs = Nothing
Résumé
ADOCE est un modèle objet d'accès aux données au niveau de l'application pouvant être utilisé avec le kit de développement Windows CE pour Visual Basic. ADOCE offre de nouvelles fonctionnalités de base de données à Windows CE en autorisant l'accès aux bases de données stockées localement sur un périphérique et fournit une réplication et une synchronisation des données par rapport à une base de données en réseau. La rapidité et la facilité d'utilisation de ADOCE, son temps système économique de mémoire basse et l'espace restreint qu'il occupe sur le disque, font de lui la solution idéale pour des utilisations avec le système d'exploitation puissant et rapide Windows CE.
Pour plus d'informations
Pour obtenir les dernières informations sur Windows CE et Les outils de développement incorporés, consultez le site Web de Microsoft Windows CE http://www.microsoft.com/windowsce/.
Pour plus d'informations sur les contrôles ActiveX, consultez le site http://www.microsoft.com/com/default.mspx.
Les informations contenues dans ce document représentent l’opinion actuelle de Microsoft Corporation sur les points cités à la date de publication. Microsoft s’adapte aux conditions fluctuantes du marché et cette opinion ne doit pas être interprétée comme un engagement de la part de Microsoft ; de plus, Microsoft ne peut pas garantir la véracité de toute information présentée après la date de publication. Ce document est fourni à titre d'information uniquement.
Ce livre blanc est fourni à titre d'information uniquement. MICROSOFT EXCLUT TOUTE GARANTIE, EXPRESSE OU IMPLICITE EN CE QUI CONCERNE CE DOCUMENT.
Microsoft, ActiveX, Visual Basic, Visual C++, Visual J++, Win32, Windows et Windows NT sont, soit des marques déposées de Microsoft Corporation, soit des marques de commerce de Microsoft Corporation, aux États-Unis d’Amérique et/ou dans d’autres pays.
Java est une marque déposée de Sun Microsystems, Inc.
Les autres noms de produits et sociétés mentionnés ici sont des marques déposées de leurs propriétaires respectifs.
Dernière mise à jour le jeudi 25 novembre 1999