if(result==NULL)总是返回false,即使查询返回零行也是如此
if(result == NULL) is returning false always even when the query returns zero rows
我在应用程序中使用Cassandra C++驱动程序。我观察到许多撞车事故。调试后,我发现即使查询输出为零行,if (result == NULL)
也是false
,当我遍历结果时,它在某个地方崩溃了。下面是代码示例。请给我建议任何解决方案。
const char* query = "SELECT variable_id, variable_name FROM aqm_wfvariables WHERE template_id = ?;";
CassError rc = CASS_OK;
CassSession* session = NULL;
if((session=CassandraDbConnect::getInstance()->getSessionForCassandra())==NULL){
return false;
}
CassStatement* statement = cass_statement_new(query, 1);
cass_statement_bind_int32(statement, 0, wf_template_id );
CassFuture* query_future = cass_session_execute(session, statement);
cass_future_wait(query_future);
rc = cass_future_error_code(query_future);
if (rc != CASS_OK) {
logMsg(DEBUG, 7, "cass_session_execute failed for query #%d:%s:%s", 1, __FILE__, query);
cass_statement_free(statement);
return false;
}
cass_statement_free(statement);
const CassResult* result = cass_future_get_result(query_future);
if (result == NULL) {
cass_future_free(query_future);
logMsg(DEBUG, 7, "No values are returned for query #%d:%s:%s", 1, __FILE__, query);
return false;
}
cass_future_free(query_future);
CassIterator* row_iterator = cass_iterator_from_result(result);
while (cass_iterator_next(row_iterator)) {
const CassRow* row = cass_iterator_get_row(row_iterator);
/* Copy data from the row */
您应该使用
(result.cass_result_row_count>0)
而不是
(result == NULL)
以验证查询是否返回零行。在您的代码中,result
始终是CassResult
的实例,当返回零行时,它不是null引用。
相关文章:
- OpenInventor从9.8升级到10.4.2后,GLSL纹理返回零
- 矩阵向量乘法(cublasDgemv)返回零
- 是否可以在 QAbstractItemModel 中返回正数行数和零列数?
- GetDIBits 在屏幕捕获函数中多次迭代后返回零
- 提取后返回换行符的C++istream.get()
- 返回std::string的函数返回零
- 创建一个始终返回零但优化器不知道的函数
- 时钟功能返回零时差
- DLL – 在 DLL 初始化时填充的静态向量,向客户端程序返回零大小
- VPN管理代理总是返回零配置文件,而且我似乎无法创建新的配置文件
- 变量模板中的除法在 Visual Studio 2017 中返回零
- 为什么std :: string使wsagetlasterror返回零
- Bigint部门总是返回零
- InternetReadFile 填充缓冲区,但返回零字节读取
- 任何人都知道如何解决尝试将从MySQL数据库返回的行打印到文本文件(.txt)中的C++
- C 时钟()仅返回零
- 为什么AddRef返回零
- 包含零行和 1000 列的矩阵
- OpenCV Countour区域返回零
- if(result==NULL)总是返回false,即使查询返回零行也是如此