wince下数据库(sqlite)插入变量的问题

yafei1188 2017-01-13 05:22:35
在wince系统下,从listCtrl里读出数值,存在一个CString的数组里,然后,把这个数组里的数据存到数据库里,代码如下:


CString set[16];
//读listCtrl的数据存到set数组里
set[0] = listCtrl.GetItemText(0,1);
set[1] = listCtrl.GetItemText(1,1);
set[2] = listCtrl.GetItemText(2,1);
set[3] = listCtrl.GetItemText(3,1);
set[4] = listCtrl.GetItemText(4,1);
set[5] = listCtrl.GetItemText(5,1);

set[6] = listCtrl.GetItemText(0,3);
set[7] = listCtrl.GetItemText(1,3);
set[8] = listCtrl.GetItemText(2,3);
set[9] = listCtrl.GetItemText(3,3);
set[10] = listCtrl.GetItemText(4,3);
set[11] = listCtrl.GetItemText(5,3);

sqlite3 * db = NULL;
int result = sqlite3_open("\\Nand\\12345.db", &db ); //路径
char * errmsg = NULL;
sqlite3_exec( db, "create table SetTable( ID integer primary key autoincrement, name nvarchar(32) )", NULL, NULL, &errmsg ); //创建SetTable表
sqlite3_exec( db, "insert into SetTable( name ) values ('"+set[0]+"')", 0, 0, &errmsg ); //写set数组第一位


编译的时候,最后一句不能通过,提示 binary '+' : no operator found which takes a left-hand operand of type 'const char [38]' (or there is no acceptable conversion),我把 values后括号里的变量set[0]换成一个具体的数据,就可以写到数据库里面。求大神们指点一下,怎么往数据库里插入变量?
...全文
791 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
91program 2017-01-17
  • 打赏
  • 举报
回复
抛开数据库 SQLite,只谈字符串的操作。 1)在 C/C++ 语言下,字符串是不支持 + 操作的。CString 是支持的,但在与字符串混合使用时,必须对字符串使用:CString("字符串常量"),而不是直接使用字符串。 2)CString 在 WinCE 下是 Unicode 的,不是 ANSI。 3)WinCE 下 API 也是 Unicode 版本的。 具体做法:先将 set[0] 转化 ANSI 的字符串,再使用格式化字符串的功能生成一个 SQLite 需要的 char 类型字符串。 注:字符串操作函数,WinCE 支持 Unicode 和 ANSI 两个版本,并提供在这两个版本之间的转换函数。
91program 2017-01-14
  • 打赏
  • 举报
回复
在 WinCE 系统下,CString 默认是宽字节的,即 Unicode 想要使用 ANSI 字符串一起用,必须要转换,如使用:WideCharToMultiByte
  • 打赏
  • 举报
回复
WideCharToMultiByte,看看
  • 打赏
  • 举报
回复
别的不知道,起码Cstring在wince里面是宽字节的,无法跟“....”进行+操作

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧