SQLite数据库多平台应用及常见错误分析
liebian365 2024-11-13 13:24 21 浏览 0 评论
SQLite是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的SQL数据库引擎。SQLite是世界上最广泛部署的数据库引擎之一。SQLite源代码开放,没有授权限制。正是因为其免费、轻巧、绿色等特点,因此SQLite的应用范围很广,在各种软件上都有应用,其中不乏Adobe、Apple、Firefox,甚至包括google、Microsoft、SUN这样的企业。在上位机项目开发中。SQLite的应用也很广泛,今天主要跟大家分享一下SQLite的部署、应用及常见错误分析。
【公众号dotNet工控上位机:thinger_swj】
1 数据库部署
SQLite数据库和其他数据库相比,一个很大的优势在于免部署,也就意味着不需要安装即可使用,但是需要同样也需要数据库客户端管理软件的支持,SQLite的客户端软件很多,包含SQLite Database Browser、SQLite Administrator、SQLite Expert Personal、SQLite Studio等,个人比较喜欢使用SQLite Studio,需要的童鞋可以关注本公众号,在后台发送关键词SQLiteStudio即可获取。为了后续介绍SQLite数据应用,首先要准备好一个数据库及数据表,通过SQLite可以很方便的进行创建,创建完成后会生成一个文件。
如上图所示,创建了一个SQLite数据库,名称为SQLiteDemo,在数据库中创建了一个数据表,名称为Student,Student数据表下会有四个字段,分别为StudentID、StudentName、StudentGender及StudentClass,并向其中插入了两条数据。
2 数据库应用
首先创建一个Windows应用程序,窗体中简单的拖放两个控件,一个查询按钮,一个显示控件DataGridView,我们所要做的就是基于SQLite数据库实现数据的查询。如下图所示:
众所周知,Windows开发会存在平台版本的问题,一般情况下,我们使用的都是Any CPU,Any CPU默认是32位目标平台,但是有的时候我们可能需要在64位平台上使用SQLite,今天着重讲述一下如何在各个平台下实现SQLite的应用。
2.1 默认Any CPU
一般情况下,我们的项目都是使用Any CPU作为目标平台,默认为32位。如果想实现SQLite数据库应用,首先要准备一些类库,因为SQLite并不是微软的数据库,所以Windows系统是没有SQLite类库的,SQLite类库会区分32位和64位,如下图所示:
- 首先将公用的类库复制到Debug根目录下,然后手动添加下SQLiteHelper,SQLiteHelper是一个封装好的SQLite数据库操作类,如下图所示,添加之后,会有错误提示,将System.Data.SQLite.dll添加引用即可消除错误。
- 设置连接字符串:SQLite连接字符串指向的是数据库文件,所以这里首先要之前创建好的数据文件复制到项目中来,直接放到Debug路径下,然后在窗体运行初始化时,设置一下连接字符串,连接字符串格式如下:
- 在查询按钮下,写一段简单的查询代码,如下图所示:
- 运行程序,执行查询事件,代码会报错,如下图所示:
这个错误,很多童鞋经常会遇到,错误提示很明显,就是提示缺少指定模块,模块名称为SQLite.Interop.dll,如果大家还有印象的话,这个dll是在SQLite类库中,32位和64位专有的文件夹中,如下图所示,因此,我们只需要将x86文件夹下的这两个文件复制到Debug目录下,这里一定要复制x86文件夹下的,因为Any CPU默认是x86平台。
- 复制完成后,再次点击查询,结果如下:
2.2 64位平台
当我们使用64位平台时,首先将目标平台改成x64,如下图所示:
这时候,运行界面,点击查询,会出现以下错误:
对于这个错误,我们将x64文件夹下的两个文件复制到Debug目录下,然后替换一下,再执行查询,实现最终的数据读取:
当我们同时将下图中的目标平台修改为x64时,再重新生成,会在bin文件夹下重新产生一个x64的文件夹,这时候所有的生成内容都将存储在x64文件夹下,与之前的Debug无关。
这时候再重新生成,运行界面,点击查询,又会出现下面的错误:
再次遇到这样的问题,我们应该很清楚,就是需要将只需要将类库中x64文件夹下的这两个文件复制到Bin目录下x64文件夹下的Debug文件夹中,同时还需要将数据库复制进去。重新生成,点击查询,结果如下:
2.3 x86平台
当我们将下图中的目标平台修改为x86时,再重新生成,同理会在bin文件夹下重新产生一个x86的文件夹,这时候所有的生成内容都将存储在x86文件夹下,与之前的Debug无关,这里的解决方案与上述2.2描述类似,因此不再作赘述。
3 整体总结
通过针对各个平台的说明,我们发现SQLite使用中常见的错误无非就那么几种,而解决方案也是差不多,始终需要遵从一个原则,保证我们需要的第三方dll放在项目生成的路径下。当我们不清楚项目生成的路径时,可以通过清理解决方案,再重新生成解决方案,观察项目exe的修改时间,是否为当前最新的时间,从而判断该路径是否为项目生成路径。
相关推荐
- 4万多吨豪华游轮遇险 竟是因为这个原因……
-
(观察者网讯)4.7万吨豪华游轮搁浅,竟是因为油量太低?据观察者网此前报道,挪威游轮“维京天空”号上周六(23日)在挪威近海发生引擎故障搁浅。船上载有1300多人,其中28人受伤住院。经过数天的调...
- “菜鸟黑客”必用兵器之“渗透测试篇二”
-
"菜鸟黑客"必用兵器之"渗透测试篇二"上篇文章主要针对伙伴们对"渗透测试"应该如何学习?"渗透测试"的基本流程?本篇文章继续上次的分享,接着介绍一下黑客们常用的渗透测试工具有哪些?以及用实验环境让大家...
- 科幻春晚丨《震动羽翼说“Hello”》两万年星间飞行,探测器对地球的最终告白
-
作者|藤井太洋译者|祝力新【编者按】2021年科幻春晚的最后一篇小说,来自大家喜爱的日本科幻作家藤井太洋。小说将视角放在一颗太空探测器上,延续了他一贯的浪漫风格。...
- 麦子陪你做作业(二):KEGG通路数据库的正确打开姿势
-
作者:麦子KEGG是通路数据库中最庞大的,涵盖基因组网络信息,主要注释基因的功能和调控关系。当我们选到了合适的候选分子,单变量研究也已做完,接着研究机制的时便可使用到它。你需要了解你的分子目前已有哪些...
- 知存科技王绍迪:突破存储墙瓶颈,详解存算一体架构优势
-
智东西(公众号:zhidxcom)编辑|韦世玮智东西6月5日消息,近日,在落幕不久的GTIC2021嵌入式AI创新峰会上,知存科技CEO王绍迪博士以《存算一体AI芯片:AIoT设备的算力新选择》...
- 每日新闻播报(September 14)_每日新闻播报英文
-
AnOscarstatuestandscoveredwithplasticduringpreparationsleadinguptothe87thAcademyAward...
- 香港新巴城巴开放实时到站数据 供科技界研发使用
-
中新网3月22日电据香港《明报》报道,香港特区政府致力推动智慧城市,鼓励公私营机构开放数据,以便科技界研发使用。香港运输署21日与新巴及城巴(两巴)公司签署谅解备忘录,两巴将于2019年第3季度,开...
- 5款不容错过的APP: Red Bull Alert,Flipagram,WifiMapper
-
本周有不少非常出色的app推出,鸵鸟电台做了一个小合集。亮相本周榜单的有WifiMapper's安卓版的app,其中包含了RedBull的一款新型闹钟,还有一款可爱的怪物主题益智游戏。一起来看看我...
- Qt动画效果展示_qt显示图片
-
今天在这篇博文中,主要实践Qt动画,做一个实例来讲解Qt动画使用,其界面如下图所示(由于没有录制为gif动画图片,所以请各位下载查看效果):该程序使用应用程序单窗口,主窗口继承于QMainWindow...
- 如何从0到1设计实现一门自己的脚本语言
-
作者:dong...
- 三年级语文上册 仿写句子 需要的直接下载打印吧
-
描写秋天的好句好段1.秋天来了,山野变成了美丽的图画。苹果露出红红的脸庞,梨树挂起金黄的灯笼,高粱举起了燃烧的火把。大雁在天空一会儿写“人”字,一会儿写“一”字。2.花园里,菊花争奇斗艳,红的似火,粉...
- C++|那些一看就很简洁、优雅、经典的小代码段
-
目录0等概率随机洗牌:1大小写转换2字符串复制...
- 二年级上册语文必考句子仿写,家长打印,孩子照着练
-
二年级上册语文必考句子仿写,家长打印,孩子照着练。具体如下:...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- wireshark怎么抓包 (75)
- qt sleep (64)
- cs1.6指令代码大全 (55)
- factory-method (60)
- sqlite3_bind_blob (52)
- hibernate update (63)
- c++ base64 (70)
- nc 命令 (52)
- wm_close (51)
- epollin (51)
- sqlca.sqlcode (57)
- lua ipairs (60)
- tv_usec (64)
- 命令行进入文件夹 (53)
- postgresql array (57)
- statfs函数 (57)
- .project文件 (54)
- lua require (56)
- for_each (67)
- c#工厂模式 (57)
- wxsqlite3 (66)
- dmesg -c (58)
- fopen参数 (53)
- tar -zxvf -c (55)
- 速递查询 (52)