开发环境:.NET
开发语言:C#
情景:新建的智能设备项目,目标平台是WinCE。这里用到了SQLite 1.0.76.0版本组件,但是出现一个问题:在语句if (conn.State != ConnectionState.Open)出出现异常,异常提示为:MissingMethodException。猜想可能是这个属性有问题,于是干脆直接注释掉这个判断,直接运行conn.Open();可是这句还以一样的异常提示。难道真的是这个方法已经被取消了还是怎么了?我直接在监视窗口中输入conn.State,发现他是Closed值,然后直接输入ConnectionState.Open,没有值,提示说类型“System.Data.ConnectionState”同时存在于“System.Data.dll”和“System.Data.dll”中,那我就不明白了,是不是SQLite包含或引用了这个名称的组件并且和系统的这个组件不是同一个导致的问题呢?
请大家帮忙说明一下这个问题产生的原因,并提出一些参考性的解决方案,谢谢~!
开发语言:C#
情景:新建的智能设备项目,目标平台是WinCE。这里用到了SQLite 1.0.76.0版本组件,但是出现一个问题:在语句if (conn.State != ConnectionState.Open)出出现异常,异常提示为:MissingMethodException。猜想可能是这个属性有问题,于是干脆直接注释掉这个判断,直接运行conn.Open();可是这句还以一样的异常提示。难道真的是这个方法已经被取消了还是怎么了?我直接在监视窗口中输入conn.State,发现他是Closed值,然后直接输入ConnectionState.Open,没有值,提示说类型“System.Data.ConnectionState”同时存在于“System.Data.dll”和“System.Data.dll”中,那我就不明白了,是不是SQLite包含或引用了这个名称的组件并且和系统的这个组件不是同一个导致的问题呢?
请大家帮忙说明一下这个问题产生的原因,并提出一些参考性的解决方案,谢谢~!
using (SQLiteConnection cn = new SQLiteConnection(con))
{
cn.Open();
}
file是数据库文件路径
{
SQLiteCommand cmd = new SQLiteCommand(); if (conn.State != ConnectionState.Open) {
conn.Open(); }
cmd.Connection = conn; cmd.CommandText = cmdText; cmd.CommandType = CommandType.Text; if (cmdParms != null)
{
foreach (SQLiteParameter parm in cmdParms)
{
cmd.Parameters.Add(parm);
}
}
return cmd;
}
conn的路径是合法的,我就不明白为什么在判断连接状态或打开连接的时候会出那个问题。
引用的dll用官网下的zip包里面的dll,不要用exe安装程序安装后的安装目录下的那个,不好说它有没有问题反正我是这样解决的:
直接在安装目录下(C:\Program Files\SQLite.NET\bin)把文件夹CompactFramework直接拷贝到我的设备中(WinCE环境),运行testce.exe报异常,然后登了几秒才自动结束程序;
然后我直接把下载下来的压缩包(SQLite-1.0.66.0-binaries.zip)解压(F:\Download\SQLite\SQLite-1.0.66.0-binaries)并把里面的bin文件夹下的CompactFramework文件夹整个拷贝到我的设备中,运行testce.exe正常,显示的文本中有创建数据库啊表之类的(不方便截图,反正能正常运行);
最后我把这个文件夹中的System.Data.SQLite.dll组件直接拷贝到我的程序目录覆盖原来那个(原来这个是由电脑上安装目录下添加的)中,运行,OK。
嘿嘿,解释不了原因,但是这个问题算是解决了。