C++/Qt多行字符串; 还有,多个查询

Jos*_*eph 4 c++ sqlite qt

关于C++/Qt的两个[希望]快速问题.以下是否适合在多行上写字符串?

QString strQuery;
strQuery="\
         CREATE TABLE foo\
             (bar integer primary key,\
             baz varchar(20))";
Run Code Online (Sandbox Code Playgroud)

我相信这是对的,但是在Qt Creator中它没有突出显示它好像是一个大字符串.

其次,QSqlQuery.exec()会在一次执行中运行多个查询,还是需要通过exec()运行每个查询?例如,我正在尝试这样的事情:

QSqlQuery query;
QString strQuery;
strQuery="\
         CREATE TABLE foo \
             (bar integer primary key,\
             baz varchar(10));\
        CREATE TABLE herp\
             (de integer primary key, \
             derp varchar(10))";
query.exec(strQuery);
Run Code Online (Sandbox Code Playgroud)

从我所看到的,只有第一个表被创建.我不知道这是否与我的多行字符串,我的数据库类型(SQLite)或一般的QSqlQuery有关.

谢谢您的帮助!

mos*_*osg 6

我认为这将是正确的方式:

QString strQuery;
strQuery="CREATE TABLE foo " \
         "(bar integer primary key, " \
         "baz varchar(20));";
// with this style `strQuery` will be single line, like "CREATE TABLE foo (bar integer primary key, baz varchar(20));"
Run Code Online (Sandbox Code Playgroud)
QSqlQuery query;

QString strQuery;
strQuery="CREATE TABLE foo " \
         "(bar integer primary key, " \
         "baz varchar(10));"
query.exec(strQuery);

strQuery="CREATE TABLE herp " \
         "(de integer primary key, " \
         "derp varchar(10))";
query.exec(strQuery);
Run Code Online (Sandbox Code Playgroud)

  • 无需用\来逃避换行.它只是空格,C/C++预处理器自动连接"字符串""文字",中间只有空格. (4认同)