在Windows Phone 7上使用SQLite“无法打开数据库文件”

时间:2011-04-25 16:36:22

标签: sqlite windows-phone-7

我正在使用SQLite for Windows Phone 7(http://sqlitewindowsphone.codeplex.com/),我已完成本教程的所有步骤(http://dotnetslackers.com/articles/silverlight/Windows-Phone-7 -native-数据库编程-通SQLite的客户端换Windows的Phone.aspx)

然后我尝试使用select和delete等基本功能制作一些简单的应用程序。应用程序正常工作,直到我想进行此操作之一。单击选择或删除后,编译器显示他无法打开数据库文件的错误...

我不知道为什么?

2 个答案:

答案 0 :(得分:1)

我使用了相同的Sqlite客户端,并遇到了同样的问题。出现此问题的原因是sqlite尝试在IsolatedFileStorage“DatabaseName.sqlite-journal”中创建文件,并且它没有足够的权限。我解决了这个问题,因此在将数据库复制到IsolatedFileStorage之前创建了“DatabaseName.sqlite-journal”。这是我的方法:

private void CopyFromContentToStorage(String assemblyName, String dbName)
{
IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication();

        string uri = dbName + "-journal";

        store.CreateFile(uri);

        using (Stream input = Application.GetResourceStream(new Uri("/" + assemblyName + ";component/" + dbName,UriKind.Relative)).Stream)
        {
            IsolatedStorageFileStream dest = new IsolatedStorageFileStream(dbName, FileMode.OpenOrCreate, FileAccess.Write, store);
            input.Position = 0;
            CopyStream(input, dest);
            dest.Flush();
            dest.Close();
            dest.Dispose();
        }
    }

它帮助了我,并且运作良好。

希望这会对你有所帮助

答案 1 :(得分:0)

您确定文件存在吗? 你可以这样检查:

        using (var store = IsolatedStorageFile.GetUserStoreForApplication())
        {
            exists = store.FileExists(DbfileName);
        }