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 :

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

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.

Format Exemple

AAAA/MM/JJ HH:MM:SS

1947/08/15 03:33:20

MM/JJ/AAAA HH:MM:SS

04/15/1947 03:33:20

JJ MMM AAAA HH:MM:SS

15 jan 1947 03:33:20

JJ MMMM AAAA HH:MM:SS

15 janvier 1947 03:33:20

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.

Remarque :
Le paramètre ntext n'est plus pris en charge dans les fonctions de chaîne.

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

SqlCeCommand

Représente une instruction SQL exécutée sur la source de données SQL Server Compact Edition.

SqlCeCommandBuilder

Utilise la commande SELECT depuis un objet SqlCeDataAdapter pour générer des commandes INSERT, UPDATE et DELETE.

SqlCeConnection

Représente une connexion à la source de données SQL Server Compact Edition.

SqlCeDataAdapter

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.

SqlCeDataReader

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.

SqlCeEngine

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.

SqlCeError

Collecte les informations relatives à un objet SqlCeException spécifique renvoyées par une source de données SQL Server Compact Edition.

SqlCeErrorCollection

Collecte toutes les erreurs générées par le fournisseur de données de SQL Server Compact Edition.

SqlCeException

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.

SqlCeInfoMessageEventArgs

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.

SqlCeParameter

Représente un paramètre utilisé avec un objet SqlCeCommand et, éventuellement, le mappage du paramètre à une colonne dans un objet DataSet.

SqlCeParameterCollection

Collecte tous les paramètres liés à une SqlCeCommand et les mappages des paramètres à des colonnes dans un objet DataSet.

SqlCeRemoteDataAccess

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).

SqlCeReplication

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.

SqlCeResultSet

Fournit un curseur pouvant être mis à jour et capable de défiler, plus rapide qu'un DataSet et plus souple qu'un DataReader.

SqlCeRowUpdatedEventArgs

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.

SqlCeRowUpdatingEventArgs

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.

SqlCeTransaction

Représente une transaction SQL à réaliser sur la source de données SQL Server Compact Edition.

MSDN Library

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

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();

Alternatives a SQL Server CE