52

How can I create a new SQL Server Compact database file (.sdf) programmatically, without having an existing template file to copy from?

2 Answers 2

77

There is some good info here: Create a SQL Server Compact Edition Database with C#

string connectionString = "DataSource=\"test.sdf\"; Password=\"mypassword\"";
SqlCeEngine en = new SqlCeEngine(connectionString);
en.CreateDatabase();
Sign up to request clarification or add additional context in comments.

2 Comments

Surprisingly, creating a 0-byte file is good enough for SQL CE to start treating it as a database. This is useful for times when you want to use Path.GetTempFileName(), which creates a 0-byte file for you.
the DataSource must be surrounded with double quotes. The password, on the other hand, must be surrounded with single quotes.
9

First, go click on the Browse tab. Now navigate to C:\Program Files\Microsoft SQL Server Compact Edition\v3.1. Now pick the System.Dadta.SqlServerCe.dll, click on it, then click on OK to pull in the reference.

Now let’s write some code. First, go to the head of the class, whoops I mean header of your class and let’s create a using reference.

using System.Data.SqlServerCe;
using System.IO;

  string connectionString;
  string fileName = "aminescm.sdf";
  string password = “aminescm”;

  if (File.Exists(fileName))
  {
    File.Delete(fileName);
  }

  connectionString = string.Format(
    "DataSource=\"{0}\"; Password='{1}'", fileName, password);
  SqlCeEngine en = new SqlCeEngine(connectionString);
  en.CreateDatabase();

You can find more and more about this, it's really an amazing web site:

http://arcanecode.com/arcane-lessons/

2 Comments

Now you can just add a reference to the NuGet package for SqlCe instead of referencing a local assembly.
it's System.Data.SqlServerCe.dll, you have a typo there in the third sentence

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.