连接sqlite数据库失败(SQLite数据库多平台应用及常见错误分析)
连接sqlite数据库失败(SQLite数据库多平台应用及常见错误分析)当我们使用64位平台时,首先将目标平台改成x64,如下图所示:这个错误,很多童鞋经常会遇到,错误提示很明显,就是提示缺少指定模块,模块名称为SQLite.Interop.dll,如果大家还有印象的话,这个dll是在SQLite类库中,32位和64位专有的文件夹中,如下图所示,因此,我们只需要将x86文件夹下的这两个文件复制到Debug目录下,这里一定要复制x86文件夹下的,因为Any CPU默认是x86平台。首先创建一个Windows应用程序,窗体中简单的拖放两个控件,一个查询按钮,一个显示控件DataGridView,我们所要做的就是基于SQLite数据库实现数据的查询。如下图所示:众所周知,Windows开发会存在平台版本的问题,一般情况下,我们使用的都是Any CPU,Any CPU默认是32位目标平台,但是有的时候我们可能需要在64位平台上使用SQLite,今天着重讲述一下如何在各
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的修改时间,是否为当前最新的时间,从而判断该路径是否为项目生成路径。