【发布时间】:2014-04-22 16:59:40
【问题描述】:
我正在使用 mssql odbc C++代码:
Session session("ODBC", connectionString);
Statement select(session);
select << sql;
select.execute();
Poco::Data::RecordSet rs(select);
bool more = rs.moveFirst();
std::size_t cols = rs.columnCount();
std::stringstream ss;
ss << "<table>";
while (more)
{
ss << "<row>";
for (std::size_t col = 0; col < cols; ++col)
{
std::string cn = rs.columnName (col);
ss << "<" << cn << ">";
ss << rs[col].convert<std::string>();
ss << "</" << cn << ">";
}
ss << "</row>";
more = rs.moveNext();
}
ss << "</table>";
一切正常,但如果我尝试 sql 循环,例如:
DECLARE @database_name sysname ;
SET @database_name = NULL;
WHILE @database_name IS NOT NULL
BEGIN
SET @database_name = NULL;
END;
SELECT '0'
然后我有错误:bool more = rs.moveFirst();
断言违规:文件“C:\External\poco\include\Poco/Data/RecordSet.h”中的 extracts().size(),第 241 行
在 sql 中没有 while 循环所有工作,在 MSSQL 服务器管理工作室中所有工作,在 ODBC 查询工具中它没有问题,但它不适用于 poco。
有什么建议吗?
【问题讨论】:
标签: c++ poco-libraries