Qt如何实现对SQLite的写入与更新 *** 作的,急!

Qt如何实现对SQLite的写入与更新 *** 作的,急!,第1张

点击一下查看按钮,会添加一条信息,在pc机上很容易实现了,但在Arm开饭板上,数据能打开但执行插入的 *** 作的时候总是报错,我把我能想到的可能都想到了,1,修改了一下数据库的权限,2,export

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/Trolltech/QtEmbedded-470-arm/plugins/sqldrivers

,sqlite库的路径也加上了,但运行结果是一样的,错误提示不是打开数据库失败,就是动态库超出链接队列什么的(英语不太好),总之不行。后来我决定采取比较二的选择,在arm板linux系统上跑sqlite插件,后来还是以失败告终(但得到了好多启发,下片博文讲),无奈我想到的办法是整一个好的sqliteDemo

在板子上跑一下,执行sql语句的时候还是不行,报错信息是打开数据库失败,无奈做了下一步决定,重烧了一下文件系统,和内核,结果还是不行,在崩溃的边缘,向老大求教,捣鼓了一阵,结果把生成的可执行文件放到了根目录下成功了!可以对数据库进行各种 *** 作,我把我自己写的Qt

sqlite的小demo也放到了根目录下结果也成功运行了,很奇怪呀!网上还有人说友善的arm板子对数据库的支持不好。

使用SQLite方式存储数据

在Android中一共提供了5种数据存储方式,分别为:

(1)Files:通过FileInputStream和FileOutputStream对文件进行 *** 作。具体使用方法可以参阅博文《Android学习笔记34:使用文件存储数据》。

(2)Shared Preferences:常用来存储键值对形式的数据,对系统配置信息进行保存。具体使用方法可以参阅博文《Android学习笔记35:使用Shared Preferences方式存储数据》。

(3)Content Providers:数据共享,用于应用程序之间数据的访问。

(4)SQLite:Android自带的轻量级关系型数据库,支持SQL语言,用来存储大量的数据,并且能够对数据进行使用、更新、维护等 *** 作。

(5)Network:通过网络来存储和获取数据。

本篇博文介绍第四种方式,通过Android自带的SQLite数据库存储数据。

1SQLite简介

SQLite是一款开源的、嵌入式关系型数据库,第一个版本Alpha发布于2000年。SQLite在便携性、易用性、紧凑性、高效性和可靠性方面有着突出的表现。

SQLite和C/S模式的数据库软件不同,它是一款嵌入式数据库,没有独立运行的进程,与所服务的应用程序在应用程序进程空间内共生共存。它的代码与应用程序代码也是在一起的,或者说嵌入其中,作为托管它的程序的一部分。因此不存在数据库的客户端和服务器,使用SQLite一般只需要带上它的一个动态库,就可以享受它的全部功能。

数据库服务器在程序中的好处是不需要网络配置或管理。将数据库客户端与服务器运行在同一个进程中,可以省去不少的 *** 作及麻烦:不用担心防火墙或者地址解析;不用浪费时间管理复杂的授权和权限;可以减少网络调用相关的消耗;可以简化数据库管理并使程序更容易部署。

SQLite数据库通过数据库级上的独占性和共享锁来实现独立事务处理。这意味着多个进程可以在同一时间从同一数据库读取数据,但是只有一个可以写入数据。在某个进程向数据库执行写 *** 作之前,必须获得独占锁定。在发出独占锁定后,其他的读写 *** 作将不会再发生。

此外,SQLite数据库中的所有信息(比如表、视图、触发器等)都包含在一个文件内,方便管理和维护。SQLite数据库还支持大部分 *** 作系统,除电脑上使用的 *** 作系统之外,很多手机上使用的 *** 作系统同样可以运行。同时,SQLite数据库还提供了多语言的编程接口,供开发者使用。

给SQLite数据库加密解密的方法:

1、创建空的sqlite数据库。

//数据库名的后缀你可以直接指定,甚至没有后缀都可以

//方法一:创建一个空sqlite数据库,用IO的方式

FileStream fs = FileCreate(“c:\\testdb“);

//方法二:用SQLiteConnection

SQLiteConnectionCreateFile(“c:\\testdb“);

创建的数据库是个0字节的文件。

2、创建加密的空sqlite数据库

//创建一个密码为password的空的sqlite数据库

SQLiteConnectionCreateFile(“c:\\test2db“);

SQLiteConnection cnn = new SQLiteConnection(“Data Source=c:\\test2db“);

SQLiteConnection cnn = new SQLiteConnection(“Data Source=D:\\test2db“);

cnnOpen();

cnnChangePassword(“password“);

3、给未加密的数据库加密

SQLiteConnection cnn = new SQLiteConnection(“Data Source=c:\\testdb“);

cnnOpen();

cnnChangePassword(“password“);

4、打开加密sqlite数据库

//方法一

SQLiteConnection cnn = new SQLiteConnection(“Data Source=c:\\test2db“);

cnnSetPassword(“password“);

cnnOpen();

//方法二

SQLiteConnectionStringBuilder builder = new SQLiteConnectionStringBuilder();

builderDataSource = @”c:\testdb“;

builderPassword = @”password“;

SQLiteConnection cnn = new SQLiteConnection(builderConnectionString);

cnn Open();

除了用上述方法给SQLite数据库加密以外,您还可以使用专业的文件加密软件将SQLite数据库加密。

超级加密 3000采用先进的加密算法,使你的文件和文件夹加密后,真正的达到超高的加密强度,让你的加密数据无懈可击。

超级加密3000使用起来,只要点击需要加密的文件的右键,即可轻松实现文件的加密。

解密只要双击已加密文件,输入密码即可轻松搞定。

以上就是关于Qt如何实现对SQLite的写入与更新 *** 作的,急!全部的内容,包括:Qt如何实现对SQLite的写入与更新 *** 作的,急!、如何使用cancellationsignal、如何对sqlite3数据库进行加密等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9361563.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存