使用POCO检查数据库中的NULL值
Checking NULL values from Database using POCO
我使用带ODBC连接器的POCO::Data
进行查询,需要检查代码中的NULL值。在文档中,Recordset
对象应该具有函数isNull
,但我在此处下载的代码不包含这样的方法(目前版本1.4.6p4)。
如何使用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();
}
使用Nullable<std::string> val = std::string("");
isNull
是Nullable
的成员,因此您可以检查返回值是否为null。。
我知道这是一个老问题,但我遇到了问题。我还将其格式化为JSON字符串。您可以使用Poco::Recordset::IsNull(ColumnName)
来检查给定列名的值是否为NULL。
下面的代码将用空字符串替换NULLS,以防止抛出错误:
Poco::Data::Statement statement(session);
statement << query;
statement.execute();
Poco::Data::RecordSet record_set(statement);
bool more = record_set.moveFirst();
while (more)
{
std::map<std::string, std::string> row;
for (std::size_t i = 0; i < record_set.columnCount(); ++i)
{
std::string val = "";
if(!record_set.isNull(record_set.columnName(i)))
val = record_set[i].convert<std::string>();
// print results for testing
cout << "->" << record_set.columnName(i) << ":{" << val << "}";
}
ret.push_back(row);
more = record_set.moveNext();
}
使用record_set[col].isEmpty()
检查NULL。
相关文章:
- 查询SQLite数据库中的日期
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 如果我std::dynamic_pointer_cast并且底层dynamic_cast的结果为null,那么返回的sh
- 如何在 c++ 中'NULL'字符串
- 如何在ArangoDb AQL查询中指定数据库
- c++使用foreach使数组为null
- 当使用通配符和null指针调用函数时,对输出的说明
- 从数据库实时显示QT c++中的数据
- 使用 pqxx 将 std::vector 存储在 postgresql 中,并从数据库中检索它
- 当字段可以为null时,如何使用C++接口在Avro中写入数据
- 如何在映射中返回null
- 无法在C++中建立与MySQL数据库的连接
- 将类实现到数据库程序中
- 连接 dockerized 模型和 dockerized 数据库时出现"无法 SQLConnect"错误
- C++应用程序 MySQL odbc 数据库连接错误:在引发"otl_tmpl_exception<>"实例后终止调用
- 为什么返回 NULL 不会破坏函数?
- 构造函数中的 QQuickItem 父项 null
- 调试编译的服务器在数据库打开时崩溃
- QT-写入SQL数据库时,空的qlineedits不会以null的方式传递
- 使用POCO检查数据库中的NULL值