Windows应用商店应用中的SQLite异常

时间:2014-07-16 07:38:07

标签: c# sqlite windows-store-apps windows-phone-8.1

在我的适用于Windows 8.1(商店)和Windows Phone 8.1的通用应用程序中,仅在Store App中打开数据库时出现异常。代码是为两者共享的,对于Windows Phone,它正在运行。

class MemoDB
{
    public static SQLiteConnection conn;

    public MemoDB() { 
        conn = LoadDatabase();
    }

    static private SQLiteConnection LoadDatabase()
    {
       // Get a reference to the SQLite database
       conn = new SQLiteConnection("ct_history.sqlite");
    ...
    }
}

异常{"无法设置临时目录。"}出现在最后显示的代码行中,详情如下:

SQLitePCL.SQLiteException was not handled by user code.
  HResult=-2146233088
  Message=Unable to set temporary directory.
  Source=SQLitePCL
  StackTrace:
       at SQLitePCL.SQLiteConnection.SetTemporaryDirectory()
       at SQLitePCL.SQLiteConnection..ctor(String fileName, Boolean setTemporaryDirectory)
       at SQLitePCL.SQLiteConnection..ctor(String fileName)
       at CTDICT.MemoDB.LoadDatabase()
       at CTDICT.MemoDB..ctor()
       at CTDICT.Dictionary..ctor()
       at CTDICT.CTDICT_Windows_XamlTypeInfo.XamlTypeInfoProvider.Activate_8_Dictionary()
       at CTDICT.CTDICT_Windows_XamlTypeInfo.XamlUserType.ActivateInstance()
  InnerException: SQLitePCL.SQLiteException
       HResult=-2146233088
       Message=Unable to open the database file: :memory:
       Source=SQLitePCL
       StackTrace:
            at SQLitePCL.SQLiteConnection..ctor(String fileName, Boolean setTemporaryDirectory)
            at SQLitePCL.SQLiteConnection.SetTemporaryDirectory()
       InnerException: System.DllNotFoundException
            HResult=-2146233052
            Message=DLL "sqlite3.dll": The specified module could not be found. (Exception from HRESULT: 0x8007007E) can not be loaded.
            Source=SQLitePCL.Ext
            TypeName=""
            StackTrace:
                 at SQLitePCL.SQLite3Provider.NativeMethods.sqlite3_open(IntPtr filename, IntPtr& db)
                 at SQLitePCL.SQLite3Provider.Sqlite3Open(IntPtr filename, IntPtr& db)
                 at SQLitePCL.SQLiteConnection..ctor(String fileName, Boolean setTemporaryDirectory)
            InnerException: 

在我看来," DLL sqlite3.dll:无法找到指定的模块"指着这个问题。我已经检查了路径" C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v8.1 \ ExtensionSDKs \ SQLite.WinRT81 \ 3.8.5 \"并在所有配置中发现DLL(ARM,x64,x86)。

正确设置SQLite for Windows运行时(Windows 8.1)(版本3.8.5.0)和SQLitePCL(v4.0.30319)的引用。

知道该怎么做?

1 个答案:

答案 0 :(得分:5)

即使我已经好几次,我也再次删除了Windows Runtime(Windows 8.1)的参考。但这次我还删除了适用于Windows的Microsoft Visual C ++ 2013 Runtime Package的参考。在我再次添加之后,问题就消失了。