怎么在.NET中安装SQLite provider就不说了。网上一搜一大把。
这里是一篇InfoQ上的文章:SQLite——只要3分钟,你就可以在.NET上创建和运行它
这里只说碰到的两个问题。
1. 连接数据库时出现错误 -- 混合模式程序集是针对“v2.0.50727”版的运行时生成的……
建立 SQLiteConnection 时抛出异常 FileLoadException 。具体错误信息为:混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。
这是因为.NET Framework 4.0中把版本号全部统一成4.0了,而这个SQLite provider是.NET 2.0的。解决方法也很简单。在app.config的configuration节点下加入以下节点:
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
</startup>
想了解原理的可以去看 这篇文章。
2. 使用DataContext对象(Linq的用法)连接数据库,长时间程序无响应
如果你为了图省事不想建立SQLiteConnection,直接建立DataContext,像这样:
var dc = new DataContext(@"data source=your_sqlite_db_path");
那么稍后执行查询的时候,就会出现程序长时间无响应的情况。我想这是因为程序会默认创建 SQLServer 的 connection 而不是 SQLite 的 connection 的缘故。解决方法也很简单。手动建立一个 SQLiteConnection 然后传给 DataContext 就行。像这样:
var conn = new SQLiteConnection(@"data source=your_sqlite_db_path");
var dc = new DataContext(conn);
顺便附上一小段Linq代码,算是备忘:
string dbPath = @"your_sqlite_db_path";
var dc = new DataContext(new SQLiteConnection(dbPath));
Table<User> user = dc.GetTable<User>();
// Linq form
// var query = from u in user
// where u.Name = "David"
// select u;
// lambda expression form
var query = user.AsQueryable().Where(u => u.Name == "David").Select(u => u);
foreach (User u in query)
Console.WriteLine("id: {0}, Name: {1}", u.Id, u.Name);
其中User是数据表的实体类。定义如下:
// // table definition
// CREATE TABLE users (
// id INTEGER PRIMARY KEY AUTOINCREMENT,
// name VARCHAR(30)
// )
[Table(Name="users")]
class User
{
[Column(Name="id")]
public int Id { get; set; }
[Column(Name="name")]
public string Name { get; set; }
}
搞Rails习惯了,表没有按照SQLServer的那一套命名规则来,所以还需要手动指定表名和字段名。如果表名和字段名都和实体类一样的话,就没必要手动指定映射了。不过Attribute还是要写的。
分享到:
相关推荐
invariant="System.Data.SQLite"description=".NET Framework Data Provider for SQLite"type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite,Version=1.0.118.0, Culture=neutral,PublicKeyToken=db937bc...
3. **SharpPlus.Sqlite.Developer.v4.0**:这看起来是一个针对.NET Framework 4.0的SQLite数据库开发工具包。SharpPlus可能是对SQLite .NET Provider的一个增强版本,提供了更丰富的功能和更方便的API,使得.NET...
1. SQLite .NET Provider:这是C#与SQLite交互的核心,它提供了ADO.NET接口,使得开发人员可以使用.NET Framework的数据访问技术(如SqlCommand、SqlConnection等)来操作SQLite数据库。在这个控件包中,可能包含...
描述中提到的".net4.0以上"意味着这个SQLite版本兼容.NET Framework 4.0及更高版本。这很重要,因为不同的.NET版本可能不兼容某些库,所以确保库与项目使用的框架版本匹配至关重要。 标签"sqlite x64 VS2015"进一步...
CodeBuilder 基于.NET Framework 4.0 开发,它使用了动态编译技术,你可以嵌入 C#或 VB.NET 代码对对象属性进行个性化的扩展,结合灵活的模板生成你所想要的任何代码。 数据源(ISourceProvider)。提供数据结构的来源...
string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\myDatabase.mdb;Jet OLEDB:Database Password=myPassword;"; OleDbConnection conn = new OleDbConnection(connStr); conn.Open(); ...
在使用SQLite时,还需要确保项目引用了System.Data.SQLite库,并且可能需要解决.NET Framework版本兼容问题。如果遇到“混合模式程序集是针对‘v2.0.50727’版的运行时生成的,在没有配置其他信息的情况下,无法在...
- 构建连接字符串,例如:`string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties=\"Excel 8.0;HDR=YES\"";` - 创建OleDbConnection对象并打开连接:`...
要连接到DBF文件,C#可以借助ADO.NET(Microsoft .NET Framework的一部分)来实现。ADO.NET提供了一套全面的数据访问接口,允许开发者与各种数据库系统交互,包括非关系型数据库如DBF。 首先,我们需要引用必要的...
string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\myDatabase.mdb;Jet OLEDB:Database Password=myPassword;"; // 创建连接对象 using (OleDbConnection connection = new ...