vs2010中使用sqlite及出现的问题

以前只用VS2008调用过sqlite,今天用VS2010调用sqlite出现了问题,本来想在引用中加载了sqlite的两个动态连接文件后就可以直接调用它的连接对象了。但调用的时候出现了“混合模式程序集是针对....”的错误提示,程序无法运行。

一开始没有用到sqlite的连接,仅仅调用我对连接数据库的一个封装类中的方法,怎么弄都不能运行到我的方法体中去,当时也没注意太多,设置了很多断点,后来就连窗体自带的的方法也不执行了,直到后面脱离封装的内,单独写了一个sqlite的连接,在调用连接的时候就出现了文章开头描述的错误。

仔细看了以下sqlite的版本,初步发现了问题,那就是现有的System.Data.Sqlite这个数据访问provider是针对.NET2.0环境开发(最新的版本是1.0.66.0,2010年4月18日发布的),而目前官方也没有给出最新的.NET4的数据访问支持。
在网上搜索了一下,找到了解决的方法,就是在app.config中多添加一个配置节:startup

< startup useLegacyV2RuntimeActivationPolicy="true">
< supportedRuntime version="v4.0"/>
< /startup>  

这段配置节的意思是(参考自MSDN,具体地址:http://msdn.microsoft.com/zh-cn/library/bbx34a2h.aspx):
启用 .NET Framework 2.0 版 运行时激活策略,这是通过使用最新支持的运行时加载所有程序集。   注意:由于config配置文件的特性,如果在config配置文件中存在configSections节点,则必须将configSections放在一个,否则会引发异常:配置系统未能初始化
在原来.NET2.0,.NET3.5的时候,由于程序运行环境本质还是.NET2.0,而到了.NET4.0由于整个程序集的版本更新,以前使用.NET2.0所编写的程序集与.NET4.0的程序集继续拧互操作的时候就会出现上面所说的兼容性问题。
     通过MSDN,我们可以知道,startup配置节中的useLegacyV2RuntimeActivationPolicy属性是在.NET4.0中新增的,默认是false,表示:
使用默认的 .NET Framework 4 激活策略,该激活策略将加载 .NET Framework 4 通过使用公共语言运行时 (CLR) 版本 4 所创建的程序集,以及 CLR 早期版本通过使用受支持的低于版本 4 的最高 CLR 版本所创建的程序集。   现在如果当程序在.NET4.0环境下要使用.NET2.0及.NET3.5的程序时就必须将useLegacyV2RuntimeActivationPolicy设置为true,同时还要注意,需要在startup配置节的字节中添加supportedRuntime配置节,并指定为“v4.0”,表示使用.NET4.0运行时来运行程序。

转自:http://blog.csdn.net/xingxing513234072/article/details/16980305

时间: 2024-09-30 06:24:37

vs2010中使用sqlite及出现的问题的相关文章

vs2010下使用sqlite

1.SQLite安装SQlite官网:http://www.sqlite.org/download.html 找到以下截图中内容 第一个解压之后是sqlite3.exe,第二个解压之后是sqlite3.dll和sqlite3.def文件,第三个是sqlite3_analyzer(暂时没用到) 可将sqlite3.exe复制到C:\Windows\System32\下,这样一来可以从任何目录下运行CLP(SQLite CLP是使用和管理SQLite数据库最常用的工具), 打开命令行输入sqlite

sqlite学习笔记8:C语言中使用sqlite之创建表

前面已经说了如何打开和关闭数据库,这次要说得是如何执行SQL语句,来创建一张表. 要用的的函数: sqlite3_exec(sqlite3* db, const char *sql, sqlite_callback callback, void *data, char **errmsg) 参数: db:已经打开的数据库实例 sql:SQL语句,是一个字符串 callback:是一个回调函数 data:做为回调函数的第一个参数 errmsg:用于带回错误信息 该回调函数有两种返回值类型. 1.返回

Go语言中使用SQLite数据库

Go语言中使用SQLite数据库 1.驱动 Go支持sqlite的驱动也比较多,但是好多都是不支持database/sql接口的 https://github.com/mattn/go-sqlite3 支持database/sql接口,基于cgo(关于cgo的知识请参看官方文档或者本书后面的章节)写的 https://github.com/feyeleanor/gosqlite3 不支持database/sql接口,基于cgo写的 https://github.com/phf/go-sqlite

vs2010中使用Nunit测试c#代码结果的正确性

http://www.nunit.org/index.php?p=download 上面地址下载,有安装版的,有直接解压版的,只有里面的nunit.framewor.dll就可以做简单的测试了. 安装版的路径默认为:C:\Program Files \NUnit 2.6\bin\framework\nunit.framewor.dll 从vs2010中直接下载安装插件: 安装完后提示重启vs,然后就可以打开用了,在视图中可以打开: 然后写好测试代码之后,就能够看到结果,不对的话会有相应的错误..

Android中使用Sqlite数据库 (一) 建表

一.实现一个类,继承SQLiteOpenHelper类,并实现构造函数,onCreate()  onUpgrade() import android.content.Context; import android.database.DatabaseErrorHandler; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; impo

Android中使用Sqlite数据库 (二) 增删改查

定义接口 package com.example.android_db.service; import java.util.List; import java.util.Map; public interface PersonService { public boolean addPerson(Object[] params); public boolean deletePerson(Object[] params); public boolean updatePerson(Object[] p

在Android中利用SQLite实现对数据的增删查改

停更了一天,I'm back again~~当我们需要操作大量的数据时,我们首先想到的当然是数据库,因为可以通过简单的语句实现数据的增删改查,在Android中,我们不使用SQL或者ORACLE,我们使用SQLite,因为它占用资源更少,而语句格式与SQL语句一样. 首先,我们来在Android中实现数据库的创建与增删改查,引用数据库的类时,不再继承常用的Activity类,而是继承Android中的SQLiteOpenHelper,创建一个构造方法,四个参数分别是(Context contex

VS2010中的快捷键

一. VS2010中的快捷键 1: Ctrl + Enter (在光标指定位置的上+ K + C (注释) Ctrl + E + U (取消注释) <=> Ctrl + K + U (取消注释) 5: Tab  (增加缩进)面添加一行,并将光标移至新添加行的行首位置) Ctrl + Shift + Enter (在光标指定位置的下面添加一行,并将光标移至新添加行的行首位置) 2: Ctrl + Shift + L (删除当前行) 3: Ctrl + M + O (折叠所有的函数) Ctrl +

VS2010中如何将动态链接库改成静态链接库

VS2010中如何将动态链接库改成静态链接库 VS2010静态编译生成的.exe可执行文件,可以免安装免DLL在其他电脑直接运行. 静态编译:就是在编译可执行文件的时候,将可执行文件需要调用的对应动态链接库(.so)中的部分提取出来,链接到可执行文件中去,使可执行文件在运行的时候不依赖动态链接库. 1. 编译实现方式有两种 [1]debug方式的静态链接: 设置: (1)项目 -> 配置属性->常规->MFC的使用:在静态库中使用MFC(如果有使用MFC). (2)项目 -> 配置