免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1700 | 回复: 0
打印 上一主题 下一主题

Qtopia中使用SQLite总结及SQLite中存储中文操作 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-02-23 14:06 |只看该作者 |倒序浏览
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,插入一个中文字段。
view plain
copy to clipboard
print
?
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;
char buf[256];
char *v1="你好";
sprintf(buf,"insert into \"gpio_config_info\" values('%s');",v1);
sql=buf;
sqlite3_exec(db,sql,0,0,&zErrMsg);

②查询和使用数据库中保存的中文信息
view plain
copy to clipboard
print
?
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 ; iprintf( "azResult[%d] = %s\n", i , azResult );    sqlite3_free_table(azResult);  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
这样在Qtopia程序中就可以显示出中文了。
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/59481/showart_2184984.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP