我正在Visual Studio Pro 2008中创建一个程序,我正在尝试从我的程序访问SQL数据库。运行程序的设备在Windows CE上运行,它是条形码扫描程序。当我运行代码并尝试建立与数据库的连接时,我会抛出一个MissingMethodExeption,它说:
Can't find PInvoke DLL 'dbnetlib.dll'.
从在线研究,我发现你需要安装sql.ppc.we5.armv4i.cab文件,但我的设备没有安装它(我的一个问题)。
以下是我用来与SQL数据库建立连接的代码。
string conString = "Data Source=OS4DPC05\\SQLEXPRESS;Initial Catalog=testing;Integrated Security=SSPI;User ID=**************;";
Process.Start("\\windows\\wceload.exe", "'\\Program Files\\SmartDeviceProject2\\sql.ppc.wce5.armv4i.cab'");
using (SqlConnection con = new SqlConnection(conString))
{
con.Open();
}
这只是代码的一部分,但程序总是停在con.Open();
任何人都知道如何解决这个问题?任何建议将不胜感激。
答案 0 :(得分:3)
我解决问题的方法是在计算机上找到了dbnetlib.dll,并将其放在运行我的应用程序的同一文件夹中。不止一个,所以我一直在复制不同的版本,直到找到合适的版本。
答案 1 :(得分:2)
复制sql.ppc.we5.armv4i.cab无法解决问题。
问题是Visual Studio中的错误不会在要复制到设备的依赖项列表中包含dbnetlib.dll。 我已经将EMDK(在我的情况下为motorola Wt41N0)armv4目录中的相应dbnetlib.dll文件直接添加到VS项目并将其设置为始终复制以确保它最终在构建中。
您的设备不同,但SDK目录下的某个版本的dbnetlib.dll应该适用于您的设备处理器类型。
答案 2 :(得分:1)
尝试从Windows Compact Edition 7设备连接到Sql Server 2014实例时遇到同样的问题。
我使用的是Visual Studio 2008,因为它是支持智能设备的最新版本(Windows CE 7的设备类型)。所以我在计算机上搜索了 dbnetlib.dll ,并从 armv4i 目录中选择了一个:
我将该dll复制到目标设备上我的应用程序所在的同一目录中,然后该应用程序工作正常。
答案 3 :(得分:0)
我在VS2008中为Win CE6.5手持设备构建了一个项目,并且连接到ms sql没有问题。
现在我有了新的Win CE 7.0设备,突然间我在运行同一个项目时收到了这条消息。
原来我的新WinCE7.0手持设备中的Windows文件夹丢失了dbnetlib.dll文件。
所以我将文件从我的WinCE6.5设备复制到新WinCE7.0设备的Windows文件夹中 - 它完全正常。
答案 4 :(得分:-1)
只需从您的电脑上复制dbnetlib.dll并将其粘贴到运行后安装cab文件的设备应用程序存储文件夹中。