Le développement .NET sous Pocket PC et SQL Server CE

LEBRUN Thomas

Dans le cadre de leurs développements professionnels, les développeurs peuvent être amenés à réaliser des applications pour Pockets PC, ces miniordinateurs de poche qui servent d'agenda ou de logiciel de messagerie, mais qui, combinés à un appareil tiers (tel qu'un lecteur de code-barre par exemple) et à une base de données embarquée, peuvent s'avérer aussi efficaces qu'un PC portable tout en étant beaucoup plus maniables.

Nous verrons donc dans cet article, les outils que nous pouvons utiliser pour développer en .NET sur ces plateformes, ainsi que les possibilités que nous offre le Framework de Microsoft.

N'hésitez pas à commenter cet article : Commentez

- Titre : Le développement .NET sous Pocket PC et SQL Server CE

- Auteur : LEBRUN Thomas

- Parution : 31 octobre 2004

- Mise à jour : 1 mars 2020

- Licence : Copyright ® 2004 LEBRUN Thomas. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Le Compact Framework et SQL Server CE

- I-A. Le Compact Framework

- I-B. SQL Server CE

- II. Développement pour Pocket PC

- II-A. L'environnement de développement

- II-B. SQL Server CE et .NET

- II-B-1. Ajout de la référence au projet

- II-B-2. Ajout du « using »

- II-B-3. Création de la base de données

- II-B-4. Utilisation de la base de données

- III. Synchronisation avec une base de données SQL Server

- IV. Conclusion

I - Le Compact Framework et SQL Server CE

I-A - Le Compact Framework

Version allégée du Framework .NET de Microsoft, le Compact Framework est utilisé sur les Pockets PC, les smartphones et autres périphériques embarqués pour exécuter des applications .NET. Cette version comporte, par exemple, moins de contrôles que le Framework .NET.

Pour mieux comprendre le Compact Framework, je vous suggère de regarder l'article que je lui ai consacré et que vous trouverez à cette adresse.

Le Compact Framework peut-être téléchargé depuis le site de Microsoft.

I-B - SQL Server CE

SQL Server CE est une version de SQL Server, mais pour périphériques mobiles. En l'utilisant, vous avez donc la possibilité d'utiliser des bases de données, de créer des tables, d'effectuer des requêtes SQL, etc. Bref, depuis la disparition de Pocket Access (la version Pocket PC de Microsoft Access), SQL Server CE est la bonne solution, surtout parce qu'il est possible de synchroniser la base de données du Pocket PC avec une vraie base de données SQL Server.

Vous trouverez plus d'informations sur SQL Server CE sur ce site, et vous pourrez télécharger SQL Server CE à cette adresse.

Après avoir vu ce dont nous avons besoin pour développer, voyons maintenant comment l'utiliser.

II - Développement pour Pocket PC

II-A - L'environnement de développement

Visual Studio 2003 vous permet de développer facilement et rapidement des applications pour périphériques mobiles.

Pour ce faire, dans Visual Studio, choisissez de faire un nouveau projet (Fichier => Nouveau => Projet) et sélectionner « Application Smart Device », puis cliquer sur « OK »

L'écran suivant vous propose ensuite de choisir le type de plateforme pour laquelle vous voulez développer votre application, ainsi que le type de projet que vous souhaitez réaliser. Dans notre cas, nous développons sur « Pocket PC » (Smart Device) et nous souhaitons réaliser une « Application Windows »

Un dernier clic sur le bouton « OK » et nous nous retrouvons face à notre environnement de développement habituel.

À partir de là, il ne vous reste plus qu'à dessiner l'apparence graphique de votre application, et à ajouter le code dont vous avez besoin.

Pour exécuter vote application, pressez la touche « F5 » de votre clavier : là, une fenêtre apparaît vous demandant si vous voulez déployer votre application sur l'émulateur (pratique lors des tests) ou bien directement sur le Pocket PC (celui-ci doit alors être connecté à la machine de développement pour recevoir les fichiers).

Comme indiqué dans la fenêtre, si le Compact Framework n'est pas déjà installé sur le Pocket PC, il sera déployé en même temps que l'application.

Lorsque vous avez fait votre choix, cliquez sur « Déployer » puis patientez : Visual Studio va alors se connecter au périphérique sélectionné (émulateur ou Pocket PC), déployer l'application (et éventuellement le Compact Framework), puis lancer automatiquement l'application.

Voici, par exemple, le résultat d'une simple application dont le but n'est que d'afficher, lors du clic sur le bouton, le contenu de la TextBox :

II-B - SQL Server CE et .NET

Maintenant que vous avez vu à quel point il est simple de développer une application pour Pocket PC, voyons maintenant comment utiliser SQL Server CE dans nos développements.

II-B-1 - Ajout de la référence au projet

Une fois le téléchargement et l'installation effectués, rien ne semble avoir changé sur votre poste de développement (hormis une nouvelle entrée dans votre dossier « Programme »).

Pourtant, une nouvelle référence à ajouter est disponible dans Visual Studio. Dans votre projet, faites un clic droit sur « Références », puis cliquez sur « Ajouter une référence ».

Là, sélectionnez System.Data.SqlServerCe puis cliquez sur « OK » : la référence est maintenant ajoutée à votre projet.

II-B-2 - Ajout du « using »

Une fois la référence ajoutée, vous devez également penser à faire le « using » (C#) ou « Import » (VB.NET) correspondant :

II-B-3 - Création de la base de données

Pour créer votre base de données, il vous faut utiliser un objet SqlCeEngine, auquel vous passez comme paramètre la chaîne de connexion à la base de données locale.

Ensuite, un appel à la méthode CreateDatabase permet la création de la base de données.

Voyons cela par le code :

private void CreationDatabase()
{
// Chaîne de connexion à la base de données locale
// Les bases de données SQL Server CE sont des fichiers
// avec l'extension .sdf
string sConnexionLocal = @"Data Source=\My Documents\TestDvp.sdf";
// Objet SqlCeEngine qui permettra la création de la base de données
SqlCeEngine Engine = new SqlCeEngine(sConnexionLocal);
// Création de la base de données
Engine.CreateDatabase();
// Libération des ressources
Engine.Dispose();
}

À partir de ce moment-là, vous avez créé la base de données. Il ne vous reste plus qu'à créer la ou les tables de la base, et à faire des requêtes sur ces tables.

Pour ce faire, vous avez deux possibilités : utiliser l'utilitaire SQLCE Query, qui est une sorte d'« Enterprise Manager » simplifié, ou bien faire votre requête par le code.

Voyons donc comment exécuter une requête en la codant entièrement.

II-B-4 - Utilisation de la base de données

Pour effectuer une requête sur une base de données SQL Server CE, il nous faut :

- un objet SqlCeConnection, qui servira à faire la connexion à la base de données ;

- un objet SqlCommand, qui exécutera la requête ;

- éventuellement, un ou des objets SqlCeParameter ; qui serviront de paramètre à la requête.

À noter que certaines méthodes ou propriétés dont vous aurez besoin ne sont pas ajoutées automatiquement : vous devez ajouter une référence à « System.Data.Common » et ajouter le using (ou Import) suivant :

using System.Data.Common ;

Voici un exemple de code :

private void SqlInsertValuesRequest()
{
try
{
// Connexion à la base
SqlCeConnection SqlCnx = new SqlCeConnection(@"Data Source=\My Documents\TestDvp.sdf");
// Requête SQL à exécuter
// Nous partons du principe que la table ma_table existe déjà dans votre base de données
string sSQL = "INSERT INTO ma_table VALUES (?, ?)";
// Objet SqlCeCommand
SqlCeCommand SqlCommand = new SqlCeCommand(sSQL, SqlCnx);
// SQL Server CE accepte les requêtes paramétrées, mais n'accepte pas les paramètres nommés (@name)
// Le caractère à utiliser à la place est le point d'interrogation (?)
// Déclaration des paramètres de la requête, avec leurs spécificités
// Leur nom importe peu : seule leur position dans le code indiquera leur position dans la requête
SqlCeParameter ParamNom = new SqlCeParameter("Nom", SqlDbType.NVarChar);
ParamNom.Value = tbNom.Text.Replace("'", "''");
SqlCeParameter ParamPrenom = new SqlCeParameter("Prenom", SqlDbType.NVarChar);
ParamPrenom.Value = tbPrenom.Text.Replace("'", "''");
// Ajout des paramètres de la requête paramétrée
SqlCommand.Parameters.Add(ParamNom);
SqlCommand.Parameters.Add(ParamPrenom);
// Ouverture de la connexion
SqlCnx.Open();
// Création d'une version "compilée" de la requête
SqlCommand.Prepare();
// Exécution de la requête
SqlCommand.ExecuteNonQuery();
// Si la connexion est ouverte, on la ferme.
if ( SqlCnx.State == ConnectionState.Open )
{
SqlCnx.Close();
}
MessageBox.Show("Requête SQL effectuée avec succès", "OK", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
}
catch(SqlCeException Ex)
{
MessageBox.Show("Erreur SQL inattendue.\n" + Ex.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
}
catch(Exception Ex)
{
MessageBox.Show("Erreur inattendue.\n" + Ex.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
}
}

III - Synchronisation avec une base de données SQL Server

Plutôt que de refaire ce qui existe déjà, je vais vous renvoyer vers l'excellent article de Christian Peyrusse qui traite de « la Synchronisation de données sur Pocket PC en utilisant la méthode Remote Data Access » et que vous pouvez visualiser à cette adresse.

IV - Conclusion

En conclusion, nous avons vu, à travers cet article, à quel point le développement d'applications Smart Device (comprenez le développement d'applications pour périphériques mobiles) était relativement aisé et ne différenciait guère du développement d'applications WindowsForms.

De plus, SQL Server CE est une base de données relativement simple d'utilisation, mais qui, combinée à l'excellent Compact Framework de Microsoft, permet de réaliser des applications puissantes.

À bientôt pour un autre article :)