我想把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语句存到数据库中?
------解决方案--------------------------------------------------------
打断点看一下sqltemp 的实际内容是什么
------解决方案--------------------------------------------------------
各个数据库处理'转义的方式不一样
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'')";