在Windows Phone中使用现有的SqlCe数据库

时间:2013-12-19 18:21:16

标签: windows-phone-7 sql-server-ce

我有一个SqlCe数据库,我为另一个项目。现在我想将它用于Windows Phone项目。我的数据库结构是

enter image description here

我将我的数据库复制到我的项目文件夹中,并将其构建操作设置为“内容”,并将其复制到输出目录为“始终复制”。 在我的主页中我使用了这个:

 private const string Con_String = @"isostore:/mydb.sdf";
    public MainPage()
    {
        InitializeComponent();

        IsolatedStorageFile iso = IsolatedStorageFile.GetUserStoreForApplication();

        using (mTableDatabaseContext context = new mTableDatabaseContext(Con_String))
        {
            if (!context.DatabaseExists())
            {
                context.CreateDatabase();
            }

            if (!iso.FileExists("mydb.sdf"))
            {
                MoveReferenceDatabase();
            }

        }

    }

    public static void MoveReferenceDatabase()
    {
        IsolatedStorageFile iso = IsolatedStorageFile.GetUserStoreForApplication();
        using (Stream input = Application.GetResourceStream(new Uri("mydb.sdf", UriKind.Relative)).Stream)
        {

            using (IsolatedStorageFileStream output = iso.CreateFile("mydb.sdf"))
            {
                byte[] readBuffer = new byte[4096];
                int bytesRead = -1;

                while ((bytesRead = input.Read(readBuffer, 0, readBuffer.Length)) > 0)
                {
                    output.Write(readBuffer, 0, bytesRead);
                }
            }
        }
    }

和我的mTableDatabaseContext类是这样的:

 public class mTableDatabaseContext:DataContext
{

    public mTableDatabaseContext(string connectionString): base(connectionString)
    {

    }


    public Table<dic> my_dics
    {
        get
        {
            return this.GetTable<dic>();
        }
    }


    public Table<learn_table> my_learn_tables
    {
        get
        {
            return this.GetTable<learn_table>();
        }
    }

}

但我无法使用我的数据库和我的数据库副本不能执行??? 我该怎么办? 我怎样才能做到这一点??任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

你应该使用

private const string Con_String = @"Data Source=isostore:/mydb.sdf";

而不是

private const string Con_String = @"isostore:/mydb.sdf";