当前位置: 首页 > news >正文

Linq to SQlite的使用

数据库是软件不可或缺的组成部分,传统数据库越来越大,对于中小型应用有点浪费;SQLite,是一款轻型的数据库,支持ACID事务,无需安装或配置,源代码完全公开,速度也非常快,非常适合中小型应用;Linq to SQL是微软出的,生成和管理关系型数据库的非常易用的架构;把Linq用于SQlite数据库将会给SQlite数据库的编程带来很大方便。

参考阅读:LINQ TO SQLite实践指南;
              .NET Framework 4.0 安装SQLite Provider碰到的一些问题

首先,下载所需程序:System.Data.SQLite 和DbLinq2007 ,其中前一个是SQlite的ADO.Net Provider和LINQ Provider,DbLinq2007是Linq to SQlite产生数据上下文的软件。

创建SQlite的数据库,添加表等,SQlite有很多优秀的GUI管理软件,这里我使用的是SQLite2009 Pro;软件界面如下:

image

这里创建两个表,Application和User表,每个表只有两个字段,用于显示Linq to SQlite的用法。这个数据库位于项目文件夹的debug文件夹。用于程序运行连接。

安装System.Data.SQLite;解压DbLinq2007,我把它放到D盘的DbLinq文件夹下;到System.Data.SQLite安装文件夹下,拷System.Data.SQLite.dll文件到DbLinq2007的文件夹下,运行时需要用到它;

然后就是产生DataContext了;在控制台下运行命令:DbMetal.exe /database:Data /namespace=LinqToSQLite /code=Test.cs /provider=Sqlite /conn="data source=D:\Users.db3"

image

红色标记的分别是:DataContext类名,命名空间名,文件名,数据库路径。

然后建立项目,添加已有文件:刚才产生的文件,添加引用(DbLinq.dll、DbLinq.Sqlite.dll:位于DbLinq2007中,System.Data.SQLite.dll、 System.Data.SQLite.Linq.dll:位于System.Data.SQLite安装文件夹下,System.Data.Linq);System.Data.Linq位于.net中,如下图:

image

使用DataContext对象(Linq的用法)连接数据库时出现问题:原因是使用时为了省事,直接把连接字符串写进构造函数如:DataContext(@"data source=your_sqlite_db_path");,这样连接就会有问题,长时间无反应或是抛出异常,解决办法是显式创建SQliteConnection,如:DataContext(new SQLiteConnection(@"data source=your_sqlite_db_path"));我在程序中就是这么使用的。

然后就可以正常使用Linq to SQlite了。

var query = from u in tc.User
                        where u.ID == textBox2.Text
                        select u;
            foreach (User u in query)
            {
                textBox1.Text += "用户名:" + u.ID + "  " + "密码:" + u.Password + "\r\n";
            }

另外,可以用dotConnect for SQLite作为SQlite的ADO.NET Provider,它支持Linq to SQlite,如果用这个就没有这么麻烦了,不过它是商业软件,提供一个免费版可供使用,有关方法详见:Linq to SQLite 实战,介绍的过程很详细。

有什么不足之处,欢迎拍砖讨论,谢啦


相关文章:

  • 去掉链接a标签外的虚线框(ff,ie)
  • IE6、IE7、IE8、Firefox兼容性问题
  • 搜集整理的一个c#.net的加密解密的类
  • The server has encountered an error while loading an application during the processing of your reque
  • asp连接mysql
  • ASP+MYSQL:ODBC 驱动程序不支持所需的属性
  • ASP解决方案-Microsoft JET Database Engine(0x80004005)未指定错误
  • 编辑器 img src问题
  • IIS出现server application error
  • IIS7错误:“由于扩展配置问题而无法提供您请求的页面”解决
  • Ajax的post方法的使用
  • JS刷新当前页面
  • js中SetInterval与setTimeout
  • json 让ajax加速
  • Jquery getJSON方法分析
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • “大数据应用场景”之隔壁老王(连载四)
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • create-react-app项目添加less配置
  • Flex布局到底解决了什么问题
  • Git学习与使用心得(1)—— 初始化
  • Intervention/image 图片处理扩展包的安装和使用
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • JavaScript DOM 10 - 滚动
  • Js基础——数据类型之Null和Undefined
  • mockjs让前端开发独立于后端
  • node入门
  • 给github项目添加CI badge
  • 官方解决所有 npm 全局安装权限问题
  • 回顾2016
  • 来,膜拜下android roadmap,强大的执行力
  • 前端学习笔记之观察者模式
  • 字符串匹配基础上
  • Java性能优化之JVM GC(垃圾回收机制)
  • 阿里云ACE认证学习知识点梳理
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • 选择阿里云数据库HBase版十大理由
  • ​ArcGIS Pro 如何批量删除字段
  • # C++之functional库用法整理
  • #define、const、typedef的差别
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (Note)C++中的继承方式
  • (二十四)Flask之flask-session组件
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (译)2019年前端性能优化清单 — 下篇
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (转)Sublime Text3配置Lua运行环境
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • **PHP二维数组遍历时同时赋值