Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles
(untagged)

How to Use Existing Database in Windows Phone

0.00/5 (No votes)
5 May 2013 1  
Using existing database in Windows Phone

Introduction

Normally in Windows Phone apps, we used to create a database in the Application Launch event, like the following:

if (!dataContext.DatabaseExists())
{
	dataContext.CreateDatabase();
}

And if there are any master tables, you can write code to insert after database creation, like this:

if (!dataContext.DatabaseExists())
{
    dataContext.CreateDatabase();
    dataContext.Categories.InsertAllOnSubmit(
        new[] { DefaultCategory });
    dataContext.SubmitChanges();
}

This approach is not feasible if you have a lot of data, for example a Dictionary database. In such scenarios, you can add the existing database to the project, and set the Build Action to Content.

Properties Window - Build Action - Content

This will deploy the database file with your application onto the phone, but it will be placed in the same folder as all other static content for your application. Your application can only read from this folder.

You can communicate to the existing database using the following connection string:

private const string ConnectionString = 
"Data Source ='appdata:/Database/Dictionary.sdf';File Mode=read only;";

If you want to modify the database, you need to copy (duplicate) the database to the application isolated storage. Here is the code snippet which will help you to copy your database file to isolated storage.

const string DatabasePath = "Database";
const string Filename = @"Database/Dictionary.sdf";
using (var isolatedStorageFile = 
    IsolatedStorageFile.GetUserStoreForApplication())
{
    if (!isolatedStorageFile.DirectoryExists(DatabasePath))
    {
        isolatedStorageFile.CreateDirectory(DatabasePath);
    }

    if (isolatedStorageFile.FileExists(Filename))
    {
        return;
    }

    var resource = 
        Application.GetResourceStream(new Uri(Filename, UriKind.Relative));
    using (var file = isolatedStorageFile.CreateFile(Filename))
    {
        var length = resource.Stream.Length;
        var buffer = new byte[1024];
        var readCount = 0;
        using (var binaryReader = new BinaryReader(resource.Stream))
        {
            while (readCount < length)
            {
                int actual = binaryReader.Read(buffer, 0, buffer.Length);
                readCount += actual;
                file.Write(buffer, 0, actual);
            }
        }
    }
}

Happy programming!

Related Content

  1. Isolated Storage in C#
  2. Uploading Files using Webservice
  3. Upload multiple files using Silverlight
  4. How to Store and Retrieve files from SQL Server Database
  5. Quick introduction to SQLite with C#

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here