我使用QOCI绑定将Qt连接到Oracle 10g数据库。代码非常简单:
QSQLQuery sqlQuery = QSQLQuery(database);
sqlquery.prepare(querystring);
sqlQuery.exec();
现在,如果查询字符串只有一行,则可以正常工作:
select * from dual
但是如果它包含多行,我会得到一个ORA-911无效字符:
select *
from dual
我有很多跨越多行的查询,所以这是一个很大的问题。只是删除Qt中的换行符不是一个选项,因为查询包含行尾注释(“ - ”)。
有关如何执行这些多行查询的任何建议吗?
答案 0 :(得分:1)
回答我自己的问题:换行符是unicode U2029段落分隔符而不是普通换行符(\ n)。这触发了ORA-911。
querystring.replace(QChar(0x2029), QChar('\n'));
诀窍。