views:

45

answers:

1

I have a winforms app that uses sqlite to store data. Instead of shipping a blank database, can I use scripts to create the tables the first time the user uses the app? Can you point to a C# example?

Update: I want to avoid shipping a blank database. So if a user install the app for 1 user only, only his profile gets a copy. All users profile gets the database if the install is for all users.

A: 

Yes, this is possible:

  • When the application first runs, check if the database file exists.
  • If it doesn’t, open it with the Sqlite option FailIfMissing=False. This will create a new file.
  • Then, use SQL commands like CREATE TABLE ... to create the schema structure.

For the second step, I use code that looks something like this:

public DbConnection CreateConnectionForSchemaCreation(string fileName)
{
    var conn = new SQLiteConnection();
    conn.ConnectionString = new DbConnectionStringBuilder()
    {
        {"Data Source", fileName},
        {"Version", "3"},
        {"FailIfMissing", "False"},
    }.ConnectionString;
    conn.Open();
    return conn;
}
Timwi