在我的适用于 Windows 8.1(商店)和 Windows Phone 8.1 的通用应用程序中,我只在商店应用程序中打开数据库时出现异常。该代码为两者共享,并且对于 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\”,发现所有配置(ARM、x64、x86)中的DLL .
对适用于 Windows 运行时 (Windows 8.1)(版本 3.8.5.0)和 SQLitePCL (v4.0.30319) 的 SQLite 的引用已正确设置。
知道该怎么做吗?
最佳答案
即使我已经做了几次,我还是再次删除了对 Windows 运行时 (Windows 8.1) 的引用。但是这次我也删除了 Microsoft Visual C++ 2013 Runtime Package for Windows 的引用。在我再次添加后,问题就消失了。
关于c# - Windows 应用商店应用程序中的 SQLite 异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24774884/