SQLite中如何用api *** 作blob类型的字段
在实际的编程开发当中我们经常要处理一些大容量二进制数据的存储,如或者音乐等等。对于这些二进制数据(blob字段)我们不能像处理普通的文本那样 简单的插入或者查询,为此SQLite提供了一组函数来处理这种BLOB字段类型。下面的代码演示了如何使用这些API函数。
首先我们要建立一个数据库:
sqlite3_exec(db, "CREATE TABLE list (fliename varchar(128) UNIQUE, fzip blob);", 0, 0, &zErrMsg);
//由于mmmmrar是一个二进制文件,所以要在使用insert语句时先用?号代替
sqlite3_prepare(db, "insert into list values ('mmmmrar',);", -1, &stat, 0);
FILE fp;
long filesize = 0;
char ffile;
fp = fopen("mmmmrar", "rb");
if(fp != NULL)
{
//计算文件的大小
fseek(fp, 0, SEEK_END);
filesize = ftell(fp);
fseek(fp, 0, SEEK_SET);
//读取文件
ffile = new char[filesize+1];
size_t sz = fread(ffile, sizeof(char), filesize+1, fp);
fclose(fp);
}
//将文件数据绑定到insert语句中,替换“?”部分
sqlite3_bind_blob(stat, 1, ffile, filesize, NULL);
给数据库文件加密,我给您介绍一个比较简便的方法:
1 下载安装超级加密3000。
2 然后在需要加密的文件上单击鼠标右键选择加密。
3 在d出的文件加密窗口中设置文件加密密码就OK了。
那上面下的DLL是你写程序时用的插件,如果你只想打开db文件,就用一个SQLite助手来打开吧。
>
pycharm自带了一个简单的数据库插件,可以比较方便的进行简单的数据库 *** 作。
例如:
1创建,修改和删除数据表,字段,索引,主键,外键等。
2提供table editor来进行数据 *** 作
3提供console来运行sql命令
4提供数据导出功能
数据库创建方法
1)在pycharm的右上角找到‘database’选项卡
2)打开选项卡,按‘alt+insert'键,选择Data Source。
3)为数据库连接取一个名称,选择一个JDBC driver files。如果没有这个文件,pycharm可以自动下载。
4)选择一个JDBC driver class,mysql默认为:commysqljdbcDriver,oracle默认为:oraclejdbcOracleDriver
5)编写Database URL,示例:
myql:jdbc:mysql://localhost:3306
jdbc:oracle:thin:@localhost:1521:server
6)填写用户名和密码。
7)点击Test Connection测试连接。
8)根据提示信息修改错误,知道提示连接成功。
sqlite是一个嵌入式的SQL数据库引擎,只用一个文件就ok,小巧方便,所以是一个非常不错的嵌入式数据库,在Mozilla Firefox使用SQLite作为数据库。
例如:存放cookies的文件就是一个SQLite的数据库文件,一般存在于 ~/mozilla/firefox/cojs83dhdefault目录下,那么如何进行查看e69da5e6ba90e799bee5baa6e79fa5e9819331333363376432呢?
可使用vim打开文件,查看到使用的格式是sqlite3,而在GNU Linux下有一个命令可以对其进行查看:sqlite3,以下就是具体的使用步骤:
0、使用命令对此数据库进行打开:
$ sqlite3 cookiessqlite
进行入sqlite3命令行模式;
1、查看此文件中的数据库的名称:
sqlite> databases
seq name file
这里以学生信息的录入与读取来作为演示,主要目的是演示数据库的 *** 作,至于数据的显示等不在演示范围内,请您自行研究。
首先,在Qt中建立一个图形界面的程序项目。
然后,我们在命令行下用sqlite命令创建了数据库 C:\StudentInfo\sutdentdatadb,并且建立了一个数据库表student,该表有四个字段ID、Name、Sex、Age,未向表中添加任何数据。
关于sqlite的简单使用,可以参考我们的另一篇经验。
1SQLite的简单使用方法
在读写SQLite数据库中,我们最主要用到的是QSqlDatabase类及QSqlQuery类,前者负责创建数据库连接并打开数据库,后者负责执行查询 *** 作。实际上前者也可以进行查询 *** 作并将结果返回给QSqlQuery对象,但是Qt并不建议这么做。
在干活前,依然是先看看Assitant,这是培养独立解决问题的一个好习惯。
好,下面给 录入 按钮的点击事件编写代码。关于如何给按钮的某一事件进行编码,可以参考我们另一篇经验。
首先在pro文件中加上sql,然后别忘了#include <QSqlDatabase>以及#include <QSqlQuery>。
好了,下面在录入按钮的槽中加入如下代码:
QSqlDatabase mydb=QSqlDatabase::addDatabase("QSQLITE","wconntosqlite");
mydbsetDatabaseName("c:\\StudentInfo\\studentdatadb");
if(mydbopen())
{
QSqlQuery query(mydb);
QString sqlstr="insert into student (ID,Name,Sex,Age) values ('"
+ui->le_id->text()+"','"
+ui->le_name->text()+"','"
+ui->le_sex->text()+"',"
+ui->le_age->text()+")";
bool isok=queryexec(sqlstr);
if(isok)
qDebug()<<"数据写入成功";
}
上面我们先调用了QSqlDatabase的静态函数addDatabase创建了一个名为wconntosqlite的连接。然后给其传递数据库名称。
如果数据库打开成功,就创建一个关联的QSqlQuery对象,最后由QSqlQuery来执行插入数据工作。
特别注意:QSqlQuery对象的创建必须在mydb open成功以后才行,否则会出错。
我们来看看效果如何。
1c++怎么做界面
我们接着来写查询按钮的代码,输入以下代码:
QSqlDatabase mydb=QSqlDatabase::addDatabase("QSQLITE","rconntosqlite");
mydbsetDatabaseName("c:\\StudentInfo\\studentdatadb");
if(mydbopen())
{
QSqlQuery query(mydb);
QString sqlstr="select from student";
bool isok=queryexec(sqlstr);
if(isok)
qDebug()<<"数据读取成功";
queryfirst();
QString result="学号:"+queryvalue(0)toString()+" "
+"姓名:"+queryvalue(1)toString()+" "
+"性别:"+queryvalue(2)toString()+" "
+"年龄:"+queryvalue(3)toString();
ui->lbl_query->setText(result);
}
与写入数据基本差不多,这里需要特别注意的是queryfirst();。看看Assistant怎么说的就知道了。原来,query对象在执行完查询语句后,query的位置被置于一个不可用的位置,如果想从query中获取数据,需要设置query到一个可用的记录中才行。方法有好几种,这里我们用了first()成员函数。
好,来看看运行结果。
可以看到软件读取的数据与控制台窗口的数据是一致的。
我们来总结下Qt *** 作SQLite数据库的五步走法决:
第一步,建立一个连接:QSqlDatabase db=QSqlDatabase::addDatabase("QSQLITE");
第二步,关联数据库文件:dbsetDatabaseName("这里你的数据库文件路径")
第三步,打开数据库:dbopen()
第四步,如果数据库打开成功,就建立一个相关联的QSqlQuery对象:QSqlQuery query(db)
以上就是关于请教SQLite数据库读写BLOB字段全部的内容,包括:请教SQLite数据库读写BLOB字段、如何读取sqlite数据库的日志文件、SQLITE3 如何打开.db的数据库文件查看文件内容等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)