2

我是 C# 新手,我正在尝试使用 System.Data.SQLite 建立数据库连接。我正在使用 Compact Framework 二进制文件版本 1.0.84。和 Windows Vista 和 .net 3.5

我正在与 SharpDevelop 合作。我看到了其他几个处理这个问题的帖子,但我认为那些结果是 32 位与 64 位的问题,通过在我没有使用的某种形式的 Visual Studio 中修改项目属性来解决这些问题。我还检查了我的 IDE 中的项目属性,我可以看到的所有选项都指向 x86 和 32 位。我还尝试在属性中使用“任何 CPU”,但没有成功。

以下是相关代码:

try{

 SQLiteConnection conn;

 conn = new SQLiteConnection("Data Source=C:\\my path");

 conn.Open();
 conn.Close();
}
catch (SQLiteException ex){
   throw new Exception(ex.Message);

}

这是我在调试中运行时遇到的异常:我替换了本地路径。

System.BadImageFormatException: An attempt was made to load a program with an incorrect format. (Exception de HRESULT: 0x8007000B)
in System.Data.SQLite.SQLite3.Open
in System.Data.SQLite.SQLiteConnection.Open
in mypath 
in System.Windows.Forms.Control.OnClick
in System.Windows.Forms.Button.OnClick
in System.Windows.Forms.Button.OnMouseUp
in System.Windows.Forms.Control.WmMouseUp
in System.Windows.Forms.Control.WndProc
in System.Windows.Forms.ButtonBase.WndProc
in System.Windows.Forms.Button.WndProc
in ControlNativeWindow.OnMessage
in ControlNativeWindow.WndProc
in System.Windows.Forms.NativeWindow.DebuggableCallback
in         ComponentManager.System.Windows.Forms.UnsafenativeMethods.IMsoComponentManager.FPushMessageLoop
in ThreadContext.RunMessageLoopInner
in ThreadContext.RunMessageLoop
in System.Windows.Forms.Application.Run
in mypath

此外,当我添加 SQLite.Interop.084.dll 作为参考时,我会收到有关错误图像文件或没有元数据的警告。“本地复制”选项在属性中显示为灰色。

我将 DLL 替换为旧版本(1.0.66),现在我得到“MSB3247 - 发现同一依赖程序集的不同版本之间的冲突”

我删除了项目文件夹中的所有内容并从头开始,但我一直卡住。是否有人成功实施了紧凑框架的解决方案?任何人都可以推荐一个可以在袖珍电脑中使用的类似数据库管理器吗?

  • 在与 1.0.66 版本苦苦挣扎数小时后,我回到了 1.0.84 版本。现在我收到这条消息:无法在 c:\dev\sqlite\dotnet\System.Data.SQLite 下加载文件 SQLite3.cs。

该路径必须来自他们开发 dll 的机器,所以我猜测适配器有问题。我想我现在宁愿尝试使用不同的数据库软件,所以我想此时我会就此提出建议而不是解决方案。

对此的任何帮助将不胜感激。

4

2 回答 2

3

好的,所以我尝试了“常规”Windows 版本,它在第一次尝试时就起作用了。我没有做任何不同的事情。不幸的是,我需要为掌上电脑开发,所以我还是搞砸了

我猜 Compact Framework 的二进制文件存在某种缺陷,而且 C# 模糊的异常也不是很有帮助。我想这些二进制文件是为 64 位机器开发的,就这样离开了。

所以基本上,对于 Windows Compact Framework 使用 System.Data.SQLite,1.0.66 或 1.0.84 版本都无法完成。至少开箱即用。我会寻找另一个版本,看看会发生什么。

*我知道这篇文章没有得到“很多”的回复,但如果我正在寻找这个信息,我想找到一些相关的东西,所以我就把它留在这里。

于 2013-03-15T05:26:21.103 回答
0

过了一会儿,我尝试做同样的事情,我有一个项目,我实现了这个

在此处输入图像描述

解决方案是取消选中首选 32 位框并使用“x86 平台”目标,即使这将使用双资源进行下载。

于 2021-06-02T14:31:01.293 回答