ODBC 커넥터로 POCO::Data
을 사용하여 쿼리를 만들고 있는데 코드에서 NULL 값을 확인해야합니다. 설명서에서 Recordset
개체는 is supposed to have the function isNull
이지만 코드를 다운로드 한 here에는 해당 메서드가 없습니다 (버전 1.4.6p4).POCO를 사용하여 데이터베이스에서 NULL 값 확인
POCO 라이브러리에서 값이 NULL인지 어떻게 확인할 수 있습니까? 데이터베이스에서 검색 한 데이터로 JSON 문자열을 만들려고합니다.
내 실제 코드는 다음과 같습니다
Session session(bdName, conn);
Statement select(session);
select << sSQL;
select.execute();
RecordSet rs(select);
bool more = rs.moveFirst();
std::size_t cols = rs.columnCount();
sResult = "{\"rowsField\":[";
while (more) {
if (sResult.back() != '[') sResult += ','; // Not first time
sResult += "{\"columnsField\":[";
for (std::size_t col = 0; col < cols; ++col) {
std::string cName = rs.columnName (col);
std::string tName = getPocoTypeName(rs.columnType(col));
std::string val = "";
if (!rs[col] || rs.value(col).isEmpty())
val = "NULL"; // DOES NOT WORK
else
val = rs[col].convert<std::string>();
if (col != 0) sResult += ',';
sResult += "\n{\"nameField\":\"" + cName + '\"';
sResult += ",\"typeField\":\"" + tName + '\"';
sResult += ",\"valueField\":\"" + val + '\"';
sResult += "}"; // each JSON column/value
}
sResult += "]}\n"; // columnsField (one per row)
more = rs.moveNext();
}