Développement SQL Server CE (Compact Edition) pour Windows Mobile
Par PlaceOweb le dimanche, septembre 27 2009, 13:30 - Système - Lien permanent
Les bases de données SQL Server CE (SQL Server Compact Edition) ou MSSQL sur Windows Mobile. SQL Server 2005 Compact Edition est la nouvelle version de SQL Server Mobile (sqlmobile)
SQL Server CE et Windows Mobile
En introduction à Sql Mobile, découvrez la base de donnée embarquée sur Windows Mobile : SQL Server Compact Edition :
- Le Développement .NET sous Pocket PC et SQL Server CE
- DotNet Bonnes pratiques pour les accès aux données .NET
- La FAQ C# ADO.NET
Erreurs SQL Server
Le fichier ou l'assembly nommé 'System.Data.sqlServerCe, Version=3.5.00, Culture=neutral, PublicKeyToken=3BE235DF1C8D2AD3' ou l'une de ses dépendances, est introuvable
Une erreur inattendue s'est produite :
Le fichier ou l'assembly nommé 'System.Data.sqlServerCe, Version=3.5.00, Culture=neutral, PublicKeyToken=3BE235DF1C8D2AD3' ou l'une de ses dépendances, est introuvable
Ce message d’erreur apparaît lorsqu’une librairie (module complémentaire) est manquante. Dans ce cas, la librairie manquante est SqlServerCe.
On peut retrouver ces librairies sous forme de .CAB dans Visual Studio 2008 dans le dossier :
C:\Program Files (x86)\Microsoft Visual Studio 9.0\SmartDevices\SDK\SQL Server\Client\v2.0\wce500\armv4i\ sql.dev.FR.phone.wce5.armv4i.CAB sql.dev.FR.ppc.wce5.armv4i.CAB sql.dev.FR.wce5.armv4i.CAB sql.phone.wce5.armv4i.CAB sql.ppc.wce5.armv4i.CAB sql.wce5.armv4i.CAB
Lors de l'installation de sql.phone.wce5.armv4i.CAB et sql.dev.FR.phone.wce5.armv4i.CAB sur un WM5, il nous demande :
La version précédente de Microsoft SQL Client 2.0 sera supprimée avant l'installation de la nouvelle version. La version précédente de Microsoft SQL Client 2.0 [FR] sera supprimée avant l'installation de la nouvelle version. Sélectionnez OK pour continuer ou Annuler pour quitter.
Finalement ces .CAB semble désigner la version de 2.0 de Microsoft SQL Client
Hors, il nous faut la 3.5 : Microsoft SQL Server Compact 3.5 Service Pack 1 et Synchronization Services for ADO.NET version 1.0 Service Pack 1 pour ordinateur de bureau Windows
Une fois installé, Microsoft SQL Server Compact contient un dossier :
C:\Program Files (x86)\Microsoft SQL Server Compact Edition\v3.5\Devices\wce500\armv4i\ sqlce.dev.FR.phone.wce5.armv4i.CAB sqlce.dev.FR.ppc.wce5.armv4i.CAB sqlce.dev.FR.wce5.armv4i.CAB sqlce.phone.wce5.armv4i.CAB sqlce.ppc.wce5.armv4i.CAB sqlce.repl.phone.wce5.armv4i.CAB sqlce.repl.ppc.wce5.armv4i.CAB sqlce.repl.wce5.armv4i.CAB sqlce.wce5.armv4i.CAB sqlceca35.dll sqlcecompact35.dll sqlceer35FR.dll sqlceme35.dll sqlceoledb35.dll sqlceqp35.dll sqlcese35.dll upgrade.exe
Lors de l'installation de sqlce.phone.wce5.armv4i.CAB et sqlce.dev.FR.phone.wce5.armv4i.CAB sur un WM5, il nous demande :
La version précédente de ServerCompact 3.5 Core sera supprimée avant l'installation de la nouvelle version. La version précédente de ServerCompact 3.5 Tools FR sera supprimée avant l'installation de la nouvelle version. Sélectionnez OK pour continuer ou Annuler pour quitter.
Finalement ces .CAB semble désigner la version Microsoft SQL Server Compact 3.5
En relançant votre application, le message n'apparait plus, c'est que la librairie SQL Server Compact est prise en compte. Vous pouvez donc communiquer avec SQL.
System.Data.SqlTypes.SqlNullValueException: La colonne correspondant à l'ordinal spécifié (0) contient une valeur DBNull qui ne peut pas être représentée en tant que type de système .NET intégré. Utilisez la propriété SqlTypes ou IsDBNull.
à System.Data.SqlServerCe.SqlCeDataReader.GetString() à System.Data.SqlServerCe.SqlCeResultSet.GetString() à My.Program.Main()
depuis la requête qui avait pour but de lister toutes les tables de la base :
SELECT * FROM INFORMATION_SCHEMA.TABLES
Finalement, puisque seul le nom m'était utile, il ne reste plus qu'à le sélectionner :
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
Pour extraire des informations de ces vues, spécifiez le nom complet INFORMATION_SCHEMA.view_name.
Nom de colonne Type de données Description TABLE_CATALOG nvarchar(128) Qualificateur de la table TABLE_SCHEMA nvarchar(128) Nom du schéma contenant la table TABLE_NAME sysname Nom de la table TABLE_TYPE varchar(10) Type de table. Peut être VIEW ou BASE TABLE.
Pour plus d'information voyez Vues de schémas d'informations (Transact-SQL) et TABLES (Transact-SQL)
Dernière date de modification des données de la table et date de création de la table
sql server 2k Connaitre date modification table / vue
Est-il possible de connaitre la date de dernière modification d'une table ou d'une vue ? Je ne pense pas que cela soit possible, car lorsque l'on regarde la table sysobjects, on s'aperçoit que seule la date de création est stockée pour chaque objet de la base, mais pas la date de dernière modif.
Bien que sys.objects contienne :
- create_date datetime Date de création de l'objet.
- modify_date datetime Date de la dernière modification de l'objet à l'aide de l'instruction ALTER. Si l'objet est une table ou une vue, modify_date change également lorsqu'un index cluster sur la table ou la vue est créé ou modifié.
What are these columns date_modified & date_created in a 'select * from Information_schema.tables' query (sql ce 3.5)?
SELECT * FROM INFORMATION_SCHEMA.TABLES
Retourne des colonnes, les seules qui ne sont pas nulles sont TABLE_NAME et TABLE_TYPE. Dommage que DATE_CREATED et DATE_MODIFIED soient nulles...
Équivalent mssql du SHOW CREATE TABLE myTable de MySQL
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=N'myTable '
Que gère le SQL server CE ?
Selon SQL Server Compact 3.5 SQL Server 2005 Compact Edition ne gère pas :
- Distributed transactions
- Native XML, XQuery/QPath
- Stored procedures, views, triggers
Alors que les procédures stockées semblent être connues vis à vis du message : Nom de procédure stockée non valide. [ Stored Proc Name = sp_tables ]
Ressources
Microsoft
Microsoft TechNet : SQL Server Compact Edition
- Guide de référence SQL pour SQL Server Compact Edition (SQL Server Compact Edition ne prend en charge que la syntaxe Transact-SQL)
- Conventions de la syntaxe SQL et éléments de requête - Vue d'ensemble de SQL (SQL Server Compact Edition)
- Types de données
- Fonctions (SQL Server Compact Edition)
- Vues de schéma d'information - Schéma d'informations (SQL Server Compact Edition)
- Opérateurs (SQL Server Compact Edition)
- Mots réservés (SQL Server Compact Edition)
SQL Server Compact Edition comprend également l'Analyseur de requêtes SQL Server Compact Edition, outil qui permet d'interroger les tables d'une base de données. Pour plus d'informations, consultez l'Analyseur de requêtes SQL Server Compact Edition.
Lorsque vous accédez aux bases de données SQL Server Compact Edition, vous utilisez généralement l'espace de noms System.Data.SqlServerCe.
Types de données pris en charge par SQL Server Compact Edition
Dans une base de données Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition), chaque colonne d'une table prend en charge un ensemble de types de données qui indique le type de données que la colonne peut contenir.
Remarque : |
---|
Il peut exister des différences minimes entre Microsoft SQL Server 2005 et SQL Server Compact Edition au niveau de la promotion des types de données lorsque l'exécution d'une fonction entraîne un dépassement positif ou négatif.
|
Type de données | Description | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
bigint | Données de nombre entier allant de –2^63 (–9 223 372 036 854 775 808) à 2^63–1 (9 223 372 036 854 775 807). La taille de stockage est de 8 octets. | ||||||||||
integer | Données de nombre entier allant de –2^31 (-2 147 483 648) à 2^31–1 (2 147 483 647). La taille de stockage est de 4 octets. | ||||||||||
smallint | Données de nombre entier allant de –32 768 à 32 767. La taille de stockage est de 2 octets. | ||||||||||
tinyint | Données de nombre entier allant de 0 à 255. La taille de stockage est de 1 octet. | ||||||||||
bit | Données de nombre entier avec une valeur de 1 ou 0. La taille de stockage est de 1 bit. | ||||||||||
numeric (p, s) | Valeurs numériques fixes de précision et d'échelle comprises entre –10^38+1 et 10^38–1. La variable p spécifie la précision et peut varier entre 1 et 38. La variable s spécifie l'échelle et peut varier entre 0 et p. La taille de stockage est de 19 octets. | ||||||||||
money | Valeurs monétaires comprises entre (–2^63/10 000) (–922 337 203 685 477,5808) et 2^63–1 (922 337 203 685 477,5807) avec une précision d'un dix millième d'unité monétaire. La taille de stockage est de 8 octets. | ||||||||||
float | Nombre en virgule flottante compris entre –1,79E +308 et 1,79E+308. La taille de stockage est de 8 octets. | ||||||||||
real | Nombre de précision en virgule flottante compris entre -3,40E+38 et 3,40+38. La taille de stockage est de 4 octets. | ||||||||||
datetime | Données de date et d'heure dont la valeur est comprise entre le 1er janvier 1753 et le 31 décembre 9999, avec une précision de 3,33 millisecondes. Les valeurs sont arrondies aux incréments de ,000 ; ,003 ou ,007 millisecondes. Ces valeurs sont stockées sous la forme de deux nombres entiers de 4 octets. Les 4 premiers octets représentent le nombre de jours avant ou après la base date, soit le 1er janvier 1900. La date de base est la date de référence du système. Aucune valeur antérieure au 1er janvier 1753 n'est autorisée pour le paramètre datetime. Les 4 autres octets représentent l'heure du jour en millisecondes après minuit. La plage de secondes valide est de 0 à 59.
| ||||||||||
national character(n) Synonym:nchar(n) | Données Unicode de longueur fixe dont la longueur maximale est égale à 4 000 caractères. Longueur par défaut = 1. La taille de stockage (en octets) correspond au double du nombre de caractères entrés. | ||||||||||
national character varying(n) Synonym:nvarchar(n) | Données Unicode de longueur variable comptant entre 1 et 4 000 caractères. Longueur par défaut = 1. La taille de stockage (en octets) correspond au double du nombre de caractères entrés. | ||||||||||
ntext¹ | Données Unicode de longueur variable dont la longueur maximale est égale à (2^30–2)/2 (536 870 911) caractères. La taille de stockage (en octets) correspond au double du nombre de caractères entrés.
| ||||||||||
nchar | Données de caractères Unicode de longueur fixe de n caractères. n doit être une valeur comprise entre 1 et 4 000. La taille de stockage est le double de n octets. | ||||||||||
binary(n) | Données binaires de longueur fixe dont la longueur maximale est égale à 8 000 caractères. Longueur par défaut = 1. La taille de stockage est fixe et correspond à la longueur en octets déclarée dans le type. | ||||||||||
varbinary(n) | Données binaires de longueur variable dont la longueur maximale est égale à 8 000 caractères. Longueur par défaut = 1. La taille de stockage est variable. Elle correspond à la longueur de la valeur en octets. | ||||||||||
image¹ | Données binaires de longueur variable dont la longueur maximale est égale à 2^30–1 (1 073 741 823) octets. La taille de stockage correspond à la longueur de la valeur en octets. | ||||||||||
uniqueidentifier | Identificateur global unique (GUID). La taille de stockage est de 16 octets. | ||||||||||
IDENTITY [(s, i)] | Propriété d'une colonne de données et non un type de données distinct. Les colonnes d'identité sont toujours des colonnes de données de type nombre entier. Une table ne peut contenir qu'une seule colonne d'identité. Une amorce et un incrément peuvent être spécifiés et la colonne ne peut pas être mise à jour. s (seed) = valeur de départ i (increment) = valeur d'incrément | ||||||||||
ROWGUIDCOL | Propriété d'une colonne de données et non un type de données distinct. Colonne d'une table définie à l'aide du type de données uniqueidentifier. Une table ne peut contenir qu'une seule colonne ROWGUIDCOL. |
Fonctions prises en charge par SQL Server Compact Edition
SQL Server Compact Edition prend en charge les fonctions ci-après.
-
Fonctions d'agrégation
Réalisent des calculs sur un ensemble de valeurs et renvoie une seule valeur. À l'exception de la fonction COUNT, les fonctions d'agrégation ignorent les valeurs NULL.
AVGAVG
COUNT
MAX
MIN
SUM
-
Fonctions de date et d'heure
Réalisent une opération sur une valeur d'entrée de date et d'heure et renvoient une valeur de chaîne, numérique ou de date et d'heure.
DATEADD
DATEDIFF
DATENAME
DATEPART
GETDATE
-
Fonctions mathématiques
Réalisent des calculs basés sur des valeurs d'entrée fournies en guise de paramètres et renvoient une valeur numérique.
ABS
ACOS
ASIN
ATAN
ATN2
CEILING
COS
COT
DEGREES
EXP
FLOOR
LOG
LOG10
PI
POWER
RADIANS
RAND
ROUND
SIGN
SIN
SQRT
TAN
-
Fonctions de chaîne
Réalisent une opération sur une valeur d'entrée de chaîne et renvoient une valeur de chaîne ou numérique.
NCHAR
CHARINDEX
LEN
LOWER
LTRIM_lce_ltrim
PATINDEX
REPLACE
REPLICATE
RTRIM
SPACE_lce_space
STR
STUFF
SUBSTRING
UNICODE
UPPER_lce_upper
-
Fonctions système
Réalisent des opérations sur des valeurs, des objets et des paramètres de SQL Server Compact Edition et renvoient des informations relatives à ces éléments.
@@IDENTITY
COALESCE
DATALENGTH
Objets de l'espace de noms System.Data.SqlServerCe
Classe | Description |
---|---|
Représente une instruction SQL exécutée sur la source de données SQL Server Compact Edition. | |
Utilise la commande SELECT depuis un objet SqlCeDataAdapter pour générer des commandes INSERT, UPDATE et DELETE. | |
Représente une connexion à la source de données SQL Server Compact Edition. | |
Représente un ensemble d'objets SqlCeCommand et un objet SqlCeConnection permettant de remplir un objet DataSet et de mettre à jour la source de données. | |
Permet de lire les données depuis une source de données SQL Server Compact Edition dans un flux de lignes de données avant uniquement. | |
Représente les propriétés, les méthodes et les autres objets du moteur SQL Server Compact Edition. Cette classe permet de créer, modifier et supprimer une base de données SQL Server Compact Edition. | |
Collecte les informations relatives à un objet SqlCeException spécifique renvoyées par une source de données SQL Server Compact Edition. | |
Collecte toutes les erreurs générées par le fournisseur de données de SQL Server Compact Edition. | |
Représente l'exception levée lorsque le fournisseur sous-jacent renvoie un avertissement ou une erreur depuis la source de données SQL Server Compact Edition. | |
Fournit les données de l'événement InfoMessage qui se produit lorsque SQL Server Compact Edition envoie un message d'avertissement ou d'information. | |
Représente un paramètre utilisé avec un objet SqlCeCommand et, éventuellement, le mappage du paramètre à une colonne dans un objet DataSet. | |
Collecte tous les paramètres liés à une SqlCeCommand et les mappages des paramètres à des colonnes dans un objet DataSet. | |
Fournit les méthodes et les propriétés permettant de synchroniser les données avec Microsoft SQL Server de façon anonyme par le biais de RDA (Remote Data Access). | |
Fournit les méthodes et les propriétés permettant de synchroniser les données avec Microsoft SQL Server par le biais de la réplication de fusion. | |
Fournit un curseur pouvant être mis à jour et capable de défiler, plus rapide qu'un DataSet et plus souple qu'un DataReader. | |
Fournit les données de l'événement RowUpdated qui se produit pendant la mise à jour d'une source de données SQL Server Compact Edition, après l'exécution de la commande. | |
Fournit les données de l'événement RowUpdating qui se produit pendant la mise à jour d'une source de données SQL Server Compact Edition, mais avant l'exécution de la commande. | |
Représente une transaction SQL à réaliser sur la source de données SQL Server Compact Edition. |
MSDN Library
- SQL Server
- Documentation en ligne de SQL Server Compact Edition
- Concepts de SQL Server Compact Edition
- Procédure : installer SQL Server Compact Edition sur un appareil (l'installation du sqlce30.plateforme.processeur.cab)
- Programmation de SQL Server Compact Edition
- Concepts de SQL Server Compact Edition
- Vue d'ensemble de SQL Server Compact Edition
- Guide de programmation de SQL Server Compact Edition
- SQL Reference for SQL Server CE
- CREATE TABLE
- Types de données Data Types
- Procédures stockées de requêtes distribuées (Transact-SQL) (et sur SQL server 2005)
- sp_tables sp_tables pour lister les tables de la base de données
- sp_tables_ex
- Comment renvoyer des informations sur SQL Server liée serveurs
- Comment faire pour estimer la taille d'une base de données SQL Server CE ou SQL Server 2005 Mobile Edition
Microsoft SQL Server 2008 : SQL Server Compact 3.5
Embedded Database for Building Client Applications
Microsoft SQL Server Compact is a free SQL Server embedded database ideal for building standalone and occasionally connected applications for mobile devices, desktops, and Web clients.
Supports ADO.NET, LINQ to SQL, LINQ to Entities, and the ADO.NET Entity Framework
Microsoft SQL Server 2005 : SQL Server Compact 3.5
Build embedded database applications for desktops and mobile devices
SQL Server Compact 3.5 is a free, easy-to-use embedded database engine that lets developers build robust Windows Desktop and mobile applications that run on all Windows platforms including Windows XP, Vista, Pocket PC, and Smartphone.
Wikipedia
Microsoft SQL Server
Compact Edition
Appelée auparavant : Pocket PC / Mobile / Everywhere Edition. Il s'agit d'une édition légère adaptée à l'utilisation sur des PDA ou smartphones munis de Windows Mobile. La version Compact (version 3.5), qui succède aux éditions Mobile s'ouvre elle aux postes de travail classiques à base de Windows. Cette édition peut participer à une réplication en tant qu'abonné.
codeppc.com : Le premier site francophone dédié au développement pour Pocket PC.
Autres
- Create a Table in SQL Server Compact Edition with C#
- java2s.com : C# / C Sharp » Database ADO.net » Create table
- codeproject.com : Compact Framework Movie Collection Manager
- windowsmobiledn.com : SQL Compact Edition Insert Performance
- Accessing Data with ADO.NET
- DataReader vs DataSet
Les namespace pour sql
- Espace de noms System.Data.SqlServerCe (à utiliser avec SQL Server Compact Edition)
- Espace de noms System.Data.Sqlclient (à utiliser avec SQL Server)
Notes
La classe DataReader fournit un moyen de récupérer de manière efficace un flux (seulement avançant forward-stream) de données d'une base de données. DataReaders sont appropriées lorsque le besoin est d'afficher simplement le jeu de résultats, car un seul enregistrement à la fois est toujours présent dans la mémoire.
Le DataReader est principalement utilisé dans les scénarios où les données ne doivent pas être mis à jour, ni ne devrait persister entre plusieurs demandes.
Utilisation des DataReader ou DataSet pour remplir un tableau DataTable, DataView sur datareader bind to datagridview
Regardez aussi :
Rapidité
Selon Nouveautés pour les développeurs dans Windows Mobile 6 :
Il est préférable d'utiliser SqlCeResultSet à DataSet, car la donnée n'est pas recopié, mais accessible depuis un pointeur.
La classe SqlCeResultSet est habituellement plus performante que la classe DataSet de 300 à 500 %.
Sécurité
Selon Nouveautés pour les développeurs dans Windows Mobile 6 :
La portabilité des périphériques mobiles nécessite que vous suiviez des méthodes sécurisées pour éviter de compromettre les informations importantes. Pour sécuriser les données dans votre base de données SQL Server Compact Edition, celui-ci prend en charge la protection de la base de données et le chiffrement du contenu par mot de passe. La protection et le chiffrement d'une base de données par mot de passe est simple à réaliser lors de la création de la base de données. Vous trouverez ci-après une instruction SQL qui crée une base de données intitulée SafeData.sdf sur C, définit le mot de passe P@ssw0rd et configure la base de données pour chiffrer les données.
Create Database "c:\SafeData.sdf" databasepassword 'P@ssw0rd' encryption on
Toutes les données stockées dans la base de données seront chiffrées. Le seul moyen d'accéder au contenu de la base de données consiste à fournir le mot de passe correct à l'ouverture de la base de données. L'exemple suivant indique comment créer par programmation un fichier de base de données, protégé par mot de passe et chiffré à partir d'un programme C#.
SqlCeEngine dbEngine = new SqlCeEngine(@"data source=\My Documents\SafeData.sdf; password=P@ssw0rd;encrypt database=TRUE"); dbEngine.CreateDatabase();