加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-12 20:05:31 所属栏目:百科 来源:网络整理
导读:【工作环境:基于友善之臂mini2440开发板+Qtopia2.2版本+RedHat9+SQLite-3.3.6】 1.Qtopia中使用SQLite 由于Qt2不支持数据库操作,(Qt3版本就提供了支持数据库操作的类,但是Qtopia2比较经典,是基于Qt2的,没办法!)所以在Qt/Qtopia程序中需要数据库时,

【工作环境:基于友善之臂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,插入一个中文字段。

[cpp] view plain copy
  1. char*zErrMsg=0;
  2. char*sql;
  3. charbuf[256];
  4. char*v1="你好";
  5. sprintf(buf,"insertinto/"gpio_config_info/"values('%s');",v1);
  6. sql=buf;
  7. sqlite3_exec(db,sql,&zErrMsg);

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

copy

    intnrow=0,ncolumn=0;
  1. char**azResult;
  2. sql="SELECT*FROMgpio_config_info";
  3. sqlite3_get_table(db,&azResult,&nrow,&ncolumn,&zErrMsg);
  4. inti=0;
  5. printf("row:%dcolumn=%d/n",nrow,ncolumn);
  6. printf("/nTheresultofqueryingis:/n");
  7. item1->setText(2,codec->toUnicode(azResult[8]));//azResult[8]即为对应的“你好”字段
  8. for(i=0;i<(nrow+1)*ncolumn;i++)
  9. printf("azResult[%d]=%s/n",i,azResult[i]);
  10. sqlite3_free_table(azResult);

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读