sqlite如何向字段中插入sql语句??

JimsdogV1 2011-03-22 07:16:53
我想把sql语句存入sqlite数据库中,

使用的数据库中的updatedata表有两个字段,一个integer primary key,一个nvarchar;如下:

create table updatedata(sid integer primary key,sqlsrc nvarchar(20))

当向updatedata表中的sqlsrc 字段插入sql语句是出错,如下:

CString sqltemp,strSQL;
strSQL = L"insert into teabletest(Time,Cardid,Room) values (\'20110101\',\'12345678\',\'123\')";
sqltemp.Format(L"insert into updatedata(sid,sqlsrc) values (null, \'%s\');",strSQL);
db.execDML(sqltemp);

异常为:SQLITE_ERROR[1]: near "20110101": syntax error

如果把strSQL 赋值为不带“'”的语句如:

strSQL = L"insert into teabletest(Time,Cardid,Room) values (20110101,12345678,123)";
则能正常插入,但那已经不是sql语句了。

请问有啥方法可以把sql语句存到数据库中?


...全文
229 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
JimsdogV1 2011-03-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 iihero 的回复:]
各个数据库处理'转义的方式不一样
sqlite> insert into t123 values(1, 'insert into teabletest(Time,Cardid,Room) values (''20110101'',''12345678'',''123'')');
sqlite> select * from t123;
1|insert into teabletest(Time……
[/Quote]

这个方法确实可行,已经试过了。看来无论如何,存入前都必须对“'”进行转义了。
iihero_ 2011-03-23
  • 打赏
  • 举报
回复
各个数据库处理'转义的方式不一样
sqlite> insert into t123 values(1, 'insert into teabletest(Time,Cardid,Room) values (''20110101'',''12345678'',''123'')');
sqlite> select * from t123;
1|insert into teabletest(Time,Cardid,Room) values ('20110101','12345678','123')

因此,你可以用:
strSQL = L"insert into teabletest(Time,Cardid,Room) values (''20110101'',''12345678'',''123'')";
ACMAIN_CHM 2011-03-22
  • 打赏
  • 举报
回复
打断点看一下sqltemp 的实际内容是什么
JimsdogV1 2011-03-22
  • 打赏
  • 举报
回复

在插入前用某些不常用的字符或字符串替代“'”,
在取出sql语句时再用“'”替换回那些不常用的字符或字符,还原出sql语句,这是一种办法。

但那样毕竟已经不是我问这问题的本意了。

2,209

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 其他数据库
社区管理员
  • 其他数据库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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