怎么用C#链接SQLite 数据库 基于window mobile 平台 报错“Can't find PInvoke DLL 'SQLite.Interop”

时间:2022-10-18 22:58:47

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

using System.Data.SQLite;



namespace dabalink
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {   
            SQLiteConnection conn = new SQLiteConnection();
            conn.ConnectionString = @"Data Source=e:\wmapp\dabalink\dabalink\test.db";
            conn.Open();
            SQLiteCommand cmd = new SQLiteCommand(conn);
            cmd.CommandText = "select * from book";

            SQLiteDataAdapter da = new SQLiteDataAdapter();
            da.SelectCommand = cmd;
            DataSet ds = new DataSet();
            da.Fill(ds);
      
           
        }
    }
}
我想链接一下数据库,但是老报错,Can't find PInvoke DLL 'SQLite.Interop.066.DLL'.引用我已经添加了。这是为什么啊!请大虾们来帮忙啊

16 个解决方案

#1


是不是在手机或模拟器上没有部署相应的dll?

#2


要部署SQLite安装目录下bin目录下的SQLite.Interop.065.DLL,我用的是这个链接库,它是需要手动添加,程序不会自动部署

#3


Can't find PInvoke DLL 'SQLite.Interop.066.DLL'.这个不就是原因了么?!!

#4


能不能具体一点啊,我用的是模拟器,我不知道'SQLite.Interop.066.DLL'到底要放到哪里去啊

#5


'SQLite.Interop.066.DLL'这个库要放在.exe的目录下

#6


引用 1 楼 jiangyongtao 的回复:
是不是在手机或模拟器上没有部署相应的dll?
  模拟器上怎么部署dll文件啊 !请大侠指点!!

#7


请大家帮帮忙啊,说的仔细一点啊! 我实在是连不上了!在就是模拟机的环境咋配置啊,我用的是vs2008  !大侠们指点!!!感激不尽!!!!!!!!!!!!!

#8


VS2008应该自带远程同步工具的,使用Remote File Viewer可以将那个dll部署到程序目录下。或者可以使用同步工具ActiveSync同步模拟器,就可以在PC机上看到模拟器的目录了。

#9


'SQLite.Interop.066.DLL'这个DLL包含在项目里,
属性:如果较新则复制、内容
部署的时候就自动部署上去了

注意:好像必须包含在项目的根目录下面,在文件夹中无效

#10


如果是真机上运行,必须拷贝那个dll,如果是在模拟器里,你就把那个 dll 拷贝到模拟器里啊,在项目debug 的时候,打开windows 资源管理器--移动设备--我的Windows移动设备--Program Files--你的项目目录下。 

#11


谢啦,解决啦

#12


引用 11 楼 congbujiujie 的回复:
谢啦,解决啦


打扰了不好意思我也碰到这个问题是怎么解决的啊

#13


已经解决了
是共用钥匙的问题
详细可以参考http://www.cnblogs.com/yelaiju/archive/2010/12/21/1912541.html

#14


引用 12 楼 lfw123084 的回复:
引用 11 楼 congbujiujie 的回复:
谢啦,解决啦


打扰了不好意思我也碰到这个问题是怎么解决的啊

不好意思,我也遇到了同样的问题,请问是怎么解决的?
谢谢了。

#15


你这个我前天也遇到了,也纠结了两天,终于解决了,
你要找到你的sqlite的安装目录,然后打开bin\CompactFramework\下有个SQLite.Interop.066.DLL文件,将它复制到你的项目的解决方案资源管理器下,
选中SQLite.Interop.066.DLL,在属性面板中,将复制到输出目录一项,改成“始终复制”
就ok了

#16


该回复于2012-03-11 09:05:54被版主删除

#1


是不是在手机或模拟器上没有部署相应的dll?

#2


要部署SQLite安装目录下bin目录下的SQLite.Interop.065.DLL,我用的是这个链接库,它是需要手动添加,程序不会自动部署

#3


Can't find PInvoke DLL 'SQLite.Interop.066.DLL'.这个不就是原因了么?!!

#4


能不能具体一点啊,我用的是模拟器,我不知道'SQLite.Interop.066.DLL'到底要放到哪里去啊

#5


'SQLite.Interop.066.DLL'这个库要放在.exe的目录下

#6


引用 1 楼 jiangyongtao 的回复:
是不是在手机或模拟器上没有部署相应的dll?
  模拟器上怎么部署dll文件啊 !请大侠指点!!

#7


请大家帮帮忙啊,说的仔细一点啊! 我实在是连不上了!在就是模拟机的环境咋配置啊,我用的是vs2008  !大侠们指点!!!感激不尽!!!!!!!!!!!!!

#8


VS2008应该自带远程同步工具的,使用Remote File Viewer可以将那个dll部署到程序目录下。或者可以使用同步工具ActiveSync同步模拟器,就可以在PC机上看到模拟器的目录了。

#9


'SQLite.Interop.066.DLL'这个DLL包含在项目里,
属性:如果较新则复制、内容
部署的时候就自动部署上去了

注意:好像必须包含在项目的根目录下面,在文件夹中无效

#10


如果是真机上运行,必须拷贝那个dll,如果是在模拟器里,你就把那个 dll 拷贝到模拟器里啊,在项目debug 的时候,打开windows 资源管理器--移动设备--我的Windows移动设备--Program Files--你的项目目录下。 

#11


谢啦,解决啦

#12


引用 11 楼 congbujiujie 的回复:
谢啦,解决啦


打扰了不好意思我也碰到这个问题是怎么解决的啊

#13


已经解决了
是共用钥匙的问题
详细可以参考http://www.cnblogs.com/yelaiju/archive/2010/12/21/1912541.html

#14


引用 12 楼 lfw123084 的回复:
引用 11 楼 congbujiujie 的回复:
谢啦,解决啦


打扰了不好意思我也碰到这个问题是怎么解决的啊

不好意思,我也遇到了同样的问题,请问是怎么解决的?
谢谢了。

#15


你这个我前天也遇到了,也纠结了两天,终于解决了,
你要找到你的sqlite的安装目录,然后打开bin\CompactFramework\下有个SQLite.Interop.066.DLL文件,将它复制到你的项目的解决方案资源管理器下,
选中SQLite.Interop.066.DLL,在属性面板中,将复制到输出目录一项,改成“始终复制”
就ok了

#16


该回复于2012-03-11 09:05:54被版主删除