主题 : Qtopia中使用SQLite总结及SQLite中存储中文操作 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 7451
精华: 1
发帖: 21
金钱: 230 两
威望: 200 点
综合积分: 62 分
注册时间: 2009-07-15
最后登录: 2017-09-13
楼主  发表于: 2009-10-16 16:32

 Qtopia中使用SQLite总结及SQLite中存储中文操作

【工作环境:基于友善之臂mini2440开发板+Qtopia2.2版本+RedHat9+SQLite-3.3.6】
摘要:描述了Qtopia中使用SQLite的总结以及如何在Qtopia程序能显示中文的基础上,对SQLite数据库进行中文信息的插入和查询等操作。以及对编码的一点领悟。
1.Qtopia中使用SQLite
由于Qt2不支持数据库操作,(Qt3版本就提供了支持数据库操作的类,但是Qtopia2比较经典,是基于Qt2的,没办法!)所以在Qt/Qtopia程序中需要数据库时,可以考虑在Qt中使用Linux下操作SQLite数据库的方法。(表达的有点不清楚,呵呵,基本上就是直接把Linux下操作SQLite的代码Copy到QT程序的某一个函数下。)
需要我们修改的地方:
①在Qtopia程序中添加头文件sqlite3.h
②在Makefile文件中LIBS添加SQLite库的安装路径
如:-L/usr/local/sqlite-3.3.6/lib -lsqlite3
③如果是编译在开发板上运行的程序,则添加arm平台下编译的sqlite的库路径。(先把编译好的库拷贝到开发板,执行export LD_LIBRARY_PATH,让你的系统能够识别库路径)
2.SQLite中存储中文操作
之前可以在Qtopia中显示中文,后来程序中需要调用数据库的信息且要是中文的,就试了下,可以显示。(自己总结一下,数据库中存储的还不是0和1吗,不管你是中文还是英文,只要你输入的时候和输出的时候提供一致的编码,就可以了。)
①这里都使用UTF-8编码方式,输入中文的环境一定也要是UTF-8的(我的Vi打开的就不是),用QtCreator工具,可以选择编码打开类型。
利用编程insert,插入一个中文字段。
char *zErrMsg = 0;  
char *sql;  
char buf[256];  
char *v1="你好";  
sprintf(buf,"insert into \"gpio_config_info\" values('%s');",v1);    
sql=buf;  
sqlite3_exec(db,sql,0,0,&zErrMsg);  

②查询和使用数据库中保存的中文信息
char *zErrMsg = 0;  
char *sql;  
int nrow = 0, ncolumn = 0;  
char **azResult;  
sql = "SELECT * FROM gpio_config_info";  
sqlite3_get_table( db , sql , &azResult , &nrow , &ncolumn , &zErrMsg );  

int i = 0 ;  
printf( "row:%d column=%d \n" , nrow , ncolumn );  
printf( "\nThe result of querying is : \n" );  
  
item1->setText(2,codec->toUnicode(azResult[8]));//azResult[8]即为对应的“你好”字段  
  
for( i=0 ; i<( nrow + 1 ) * ncolumn ; i++ )  
printf( "azResult[%d] = %s\n", i , azResult );  

sqlite3_free_table(azResult);  

这样在Qtopia程序中就可以显示出中文了。

下面是我的CSDN博客,直接链接过来了。里面还有几遍关于SQLite数据库操作和移植的基础文件。欢迎大家访问、交流和指正
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/s0805341/archive/2009/10/16/4681251.aspx
级别: 新手上路
UID: 71132
精华: 0
发帖: 22
金钱: 110 两
威望: 22 点
综合积分: 44 分
注册时间: 2012-05-31
最后登录: 2012-07-23
1楼  发表于: 2012-06-15 10:53
楼主,给个工程看看呢,听你说的晕头转向!!!
大家好就是真的好
级别: 新手上路
UID: 58446
精华: 0
发帖: 40
金钱: 205 两
威望: 41 点
综合积分: 80 分
注册时间: 2011-11-08
最后登录: 2013-03-09
2楼  发表于: 2012-07-24 20:54

 回 楼主(s0805341) 的帖子

请问使用sqlite存储数据需要安装sqlite安装包么?