|This is retired content. This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This content may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.|
Microsoft SQL Server 2005 Compact Edition is a powerful database
engine and query system, included in the ROM on all Windows Mobile
6.5 devices. Devices using Windows Mobile Version 5.0, may install
SQL Server 2005 Compact Edition from this
SQL Server 2005 Compact Edition n provides relational database functionality in a small footprint: a robust data store, and an optimizing query processor. In addition to being able to manage local data, SQL Server 2005 Compact Edition supports synchronization with other Microsoft SQL Server editions.
Windows Mobile applications can use SQL Server 2005 Compact
Edition to store data in a database on the device itself, or to
query or sync with databases stored on remote servers or desktop
PCs. It is primarily designed to be used with managed code (Visual
C#, or Visual Basic .NET), although Visual C++ is supported through
an OLE DB provider. For information using Visual C++ with SQL
Server 2005 Compact Edition, see
Introduction to SQL Server Compact Edition
A SQL Server 2005 Compact Edition database is stored in a file with the .sdf extension. The file contains the complete contents of the database and can be up to 4GB.
Some of the functions you can perform in a SQL Server 2005 Compact Edition database include the following:
- Creating, deleting, and editing tables and the associated data.
- Creating, maintaining, and deleting indexes.
- Examining information schema views and data types.
- Initiating replication and remote data access (RDA)
You can use Transact-SQL commands, including data manipulation language (DML), data definition language (DDL), and functions, with the SQL Server 2005 Compact Edition database.
You can also use replication or RDA with a database that is exposed through native and managed APIs.
Architecture of SQL Server Compact Edition
The components of the SQL Server 2005 Compact Edition Database Engine are the storage engine and the query processor.
The SQL Server 2005 Compact Edition storage engine:
- Manages the file that the database is stored on and using space
in the file.
- Builds and reads the physical pages that are used to store
- Manages the data buffers and all I/O to the physical files.
- Manages transactions and uses locking to control concurrent
user access to rows and schemas in the database.
- Ensures the atomicity, consistency, isolation, and durability
(ACID) of transactions.
- Creates and maintains the index structure.
- Supports referential integrity.
- Supports encryption and password-protected databases.
The SQL Server 2005 Compact Edition query processor parses, compiles, optimizes and executes SQL expressions, queries, and commands.
The SQL grammar that is used with SQL Server 2005 Compact Edition is a subset of the Transact-SQL grammar supported by Microsoft SQL Server 2005. During parsing, the query syntax is validated and data structures representing the parsed query are built. The query processor then compiles and optimizes the query. During query optimization, the query processor produces an execution plan for the query.
The SQL Server 2005 Compact Edition query optimizer considers all available indexes when processing a query, including:
- Data manipulation language (DML) statements.
- Joins and predicates with ORDER BY.
- GROUP BY and DISTINCT clauses.
- The query processor then executes the SQL commands and returns
the results of the query.
The SQL Server 2005 Compact Edition query processor automatically creates statistical information about the distribution of values in an index. The query processor uses this information to help determine the optimal strategy for evaluating a query. The query processor uses statistics to help select the most appropriate index for efficient processing.
Developing with SQL Server Compact Edition
There are two approaches to consider when initialization the database required by your application.
- Create the database programmatically,
- Create the database using the Visual Studio Data Connection
The programmatic approach offers more flexibility, for example, when the exact specifications of the database may not be decided until runtime. The Data Connection tools are quicker and easier to use.
Creating the Database Programmatically
Creating a database requires only a few lines of C++ code:
// Create the ‘connection string’ which defines the database name, ID // and access password. string connString = "Data Source='Test.sdf'; LCID=1033; Password=\"s$;2'!dS64\"; Encrypt = TRUE;"; // Instantiate an instance of the SQL Database engine SqlCeEngine engine = new SqlCeEngine(connString); // Create the database engine.CreateDatabase(); // Create a table SqlCeConnection conn = new SqlCeConnection(“Data source='Test.sdf”); SqlCeCommand cmd = conn.CreateCommand(); cmd.CommandText = "CREATE TABLE table1 (fieldname fieldtype)"; cmd.ExecuteNonQuery();
For more information on creating and accessing
databases from managed code, see:
Creating the Database using the Visual Studio Data Connections
To create a database using the Visual Studio Data Connection tools, use Add New Itemfrom the Projectmenu within the Visual Studio IDE, and select Database Filefrom the dialog.
For more information on creating databases using the Data Connection tools, see: