zoukankan      html  css  js  c++  java
  • 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数据库多平台应用及常见错误分析

     

    如上图所示,创建了一个SQLite数据库,名称为SQLiteDemo,在数据库中创建了一个数据表,名称为Student,Student数据表下会有四个字段,分别为StudentID、StudentName、StudentGender及StudentClass,并向其中插入了两条数据。

    2 数据库应用

    首先创建一个Windows应用程序,窗体中简单的拖放两个控件,一个查询按钮,一个显示控件DataGridView,我们所要做的就是基于SQLite数据库实现数据的查询。如下图所示:

    SQLite数据库多平台应用及常见错误分析

     

    众所周知,Windows开发会存在平台版本的问题,一般情况下,我们使用的都是Any CPU,Any CPU默认是32位目标平台,但是有的时候我们可能需要在64位平台上使用SQLite,今天着重讲述一下如何在各个平台下实现SQLite的应用。

    2.1 默认Any CPU

    一般情况下,我们的项目都是使用Any CPU作为目标平台,默认为32位。如果想实现SQLite数据库应用,首先要准备一些类库,因为SQLite并不是微软的数据库,所以Windows系统是没有SQLite类库的,SQLite类库会区分32位和64位,如下图所示:

    SQLite数据库多平台应用及常见错误分析

     

    • 首先将公用的类库复制到Debug根目录下,然后手动添加下SQLiteHelper,SQLiteHelper是一个封装好的SQLite数据库操作类,如下图所示,添加之后,会有错误提示,将System.Data.SQLite.dll添加引用即可消除错误。
    SQLite数据库多平台应用及常见错误分析

     

    • 设置连接字符串:SQLite连接字符串指向的是数据库文件,所以这里首先要之前创建好的数据文件复制到项目中来,直接放到Debug路径下,然后在窗体运行初始化时,设置一下连接字符串,连接字符串格式如下:
    SQLite数据库多平台应用及常见错误分析

     

    • 在查询按钮下,写一段简单的查询代码,如下图所示:
    SQLite数据库多平台应用及常见错误分析

     

    • 运行程序,执行查询事件,代码会报错,如下图所示:
    SQLite数据库多平台应用及常见错误分析

     

    这个错误,很多童鞋经常会遇到,错误提示很明显,就是提示缺少指定模块,模块名称为SQLite.Interop.dll,如果大家还有印象的话,这个dll是在SQLite类库中,32位和64位专有的文件夹中,如下图所示,因此,我们只需要将x86文件夹下的这两个文件复制到Debug目录下,这里一定要复制x86文件夹下的,因为Any CPU默认是x86平台。

    SQLite数据库多平台应用及常见错误分析

     

    • 复制完成后,再次点击查询,结果如下:
    SQLite数据库多平台应用及常见错误分析

     

    2.2 64位平台

    当我们使用64位平台时,首先将目标平台改成x64,如下图所示:

    SQLite数据库多平台应用及常见错误分析

     

    这时候,运行界面,点击查询,会出现以下错误:

    SQLite数据库多平台应用及常见错误分析

     

    对于这个错误,我们将x64文件夹下的两个文件复制到Debug目录下,然后替换一下,再执行查询,实现最终的数据读取:

    SQLite数据库多平台应用及常见错误分析

     

    当我们同时将下图中的目标平台修改为x64时,再重新生成,会在bin文件夹下重新产生一个x64的文件夹,这时候所有的生成内容都将存储在x64文件夹下,与之前的Debug无关。

    SQLite数据库多平台应用及常见错误分析

     

    SQLite数据库多平台应用及常见错误分析

     

    这时候再重新生成,运行界面,点击查询,又会出现下面的错误:

    SQLite数据库多平台应用及常见错误分析

     

    再次遇到这样的问题,我们应该很清楚,就是需要将只需要将类库中x64文件夹下的这两个文件复制到Bin目录下x64文件夹下的Debug文件夹中,同时还需要将数据库复制进去。重新生成,点击查询,结果如下:

    SQLite数据库多平台应用及常见错误分析

     

    2.3 x86平台

    当我们将下图中的目标平台修改为x86时,再重新生成,同理会在bin文件夹下重新产生一个x86的文件夹,这时候所有的生成内容都将存储在x86文件夹下,与之前的Debug无关,这里的解决方案与上述2.2描述类似,因此不再作赘述。

    SQLite数据库多平台应用及常见错误分析

     

    3 整体总结

    通过针对各个平台的说明,我们发现SQLite使用中常见的错误无非就那么几种,而解决方案也是差不多,始终需要遵从一个原则,保证我们需要的第三方dll放在项目生成的路径下。当我们不清楚项目生成的路径时,可以通过清理解决方案,再重新生成解决方案,观察项目exe的修改时间,是否为当前最新的时间,从而判断该路径是否为项目生成路径。

  • 相关阅读:
    关于lockkeyword
    关于多层for循环迭代的效率优化问题
    Android 面试精华题目总结
    Linux基础回想(1)——Linux系统概述
    linux源代码编译安装OpenCV
    校赛热身 Problem C. Sometimes Naive (状压dp)
    校赛热身 Problem C. Sometimes Naive (状压dp)
    校赛热身 Problem B. Matrix Fast Power
    校赛热身 Problem B. Matrix Fast Power
    集合的划分(递推)
  • 原文地址:https://www.cnblogs.com/xiketang/p/13323174.html
Copyright © 2011-2022 走看看