Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1178773
  • 博文数量: 181
  • 博客积分: 4968
  • 博客等级: 上校
  • 技术积分: 1867
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-13 21:52
文章分类

全部博文(181)

文章存档

2015年(2)

2013年(6)

2012年(22)

2011年(41)

2010年(27)

2009年(51)

2008年(32)

我的朋友

分类: LINUX

2010-02-23 14:06:21

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

【工作环境:基于友善之臂mini2440开发板+Qtopia2.2版本+RedHat9+SQLite-3.3.6】

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,插入一个中文字段。

  1. char *zErrMsg = 0;  
  2. char *sql;  
  3. char buf[256];  
  4. char *v1="你好";  
  5. sprintf(buf,"insert into \"gpio_config_info\" values('%s');",v1);   
  6. sql=buf;  
  7. sqlite3_exec(db,sql,0,0,&zErrMsg);  

②查询和使用数据库中保存的中文信息

  1. char *zErrMsg = 0;  
  2. char *sql;  
  3. int nrow = 0, ncolumn = 0;  
  4. char **azResult;  
  5.   
  6. sql = "SELECT * FROM gpio_config_info";  
  7. sqlite3_get_table( db , sql , &azResult , &nrow , &ncolumn , &zErrMsg );  
  8.   
  9. int i = 0 ;  
  10. printf( "row:%d column=%d \n" , nrow , ncolumn );  
  11. printf( "\nThe result of querying is : \n" );  
  12.   
  13. item1->setText(2,codec->toUnicode(azResult[8]));//azResult[8]即为对应的“你好”字段  
  14.   
  15. for( i=0 ; i<( nrow + 1 ) * ncolumn ; i++ )  
  16. printf( "azResult[%d] = %s\n", i , azResult[i] );  
  17.   
  18. sqlite3_free_table(azResult);  

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

阅读(1340) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~