How to install the Microsoft.SQLSERVER.CE.OLEDB.4.0 Provider and connect to an SqlCe (SQL Server Compact) database file as a Microsoft Access database replacement. For IIS 7+ (7.0, 7.5, 8.0)

Replace an MS Access database with SqlCe

Not too long ago I wrote two articles about MS Access as a database back-end, which is still widely used. They’re written in Dutch and are about how to connect to a MS Access database with classic ASP and PHP, and on how to compress your MS Access database online with classic ASP.

But there is a new kid in town: SQL Compact Server 4.0, or SqlCe for short.

SqlCe database of choice with WebMatrix 3

SQL Server Compact, the embedded database engine, is the default database for Visual Studio 2010 SP1 and WebMatrix 3. This means, you can better make use of SqlCe than Access nowadays. Practically every hostingprovider should support the use of SqlCe databases, We at Vevida do.

Microsoft SQL Server Compact 4.0 is a free, embedded database that software developers can use for building ASP.NET websites and Windows desktop applications. SQL Server Compact 4.0 has a small footprint and supports private deployment of its binaries within the application folder, easy application development in Visual Studio and WebMatrix, and seamless migration of schema and data to SQL Server.

Download and install SQL Server Compact 4.0

If you want to be able to connect to an SqlCe 4.0 file from a classic ASP script, you need to download and install the appropriate version of the drivers.


Example ASP-script how to connect with an SqlCe database file

Provider=Microsoft.SQLSERVER.CE.OLEDB.4.0
This piece of ASP-code connects to an SqlCe database, performs a query and list all fields. You need to set the correct path to your database file.

<html> 
<head> 
    <title>Test SQL Compact 4 and ASP Classic + ADO</title> 
</head> 
<body>

<%
set conn = Server.CreateObject("ADODB.Connection")
strCnxn = "Provider=Microsoft.SQLSERVER.CE.OLEDB.4.0;" & _ 
    "Data Source=D:\wwwpath\to\database\SqlCe_file.sdf;"

conn.Open strCnxn
set rs = Server.CreateObject("ADODB.recordset") 
rs.Open "SELECT * FROM table", conn
do until rs.EOF 
    for each x in rs.Fields 
       Response.Write(x.name) 
       Response.Write(" = ") 
       Response.Write(x.value & "<br />") 
    next 
    Response.Write("<br />") 
    rs.MoveNext 
loop 

rs.close
conn.close
Set conn = Nothing
%>
</body> 
</html>

Conclusion

The SqlCe database engine has great performance and is a really great replacement for your old Microsoft Access databases. If you still use MS Access, convert and migrate Access to SqlCe. You won’t regret it.