sql::InvalidArgumentException MySql C++

sql::InvalidArgumentException MySql C++

本文关键字:C++ MySql InvalidArgumentException sql      更新时间:2023-10-16

我使用Visual Studio 12开发一个应用程序。在那个应用程序中,我需要做一些mySql调用,我有代码:

sql::Statement *stmt = db->global->createStatement();
sql::ResultSet *res = stmt->executeQuery("SELECT * FROM `tbl_jobs` WHERE name = 'maintenance';");
Server->maintenance = (res->getString("data") == "on")? true : false;

查询是可以的,在Navicat上运行良好,但在上

res->getString("data")

Ever throw’s that error:

…处出现未处理的异常:内存位置出现Microsoft C++异常:sql::InvalidArgumentException。。。。

如果我完成了sql::SQlException抛出,我会得到这个日志:

错误:…中出现SQLException。。。。功能:主线33错误:MySQL_ResultSet::getString:无法提取,因为不在结果集上(MySql错误代码:1544116026,SqlState:MySql_ResultSet::getString:无法获取,因为不在结果集上)

我知道sql::ResultSet没有任何数据,但如果我打印res->rowsCount(),就说我是1行。。。我尝试了res->first(),但抛出了随机错误。

?有什么想法吗?:c

您必须调用next()或类似函数才能使结果集指向集中的第n个结果

如果结果集为空,则调用getString()将失败。继续之前请检查结果。类似于:

if(!res->next())
  return; //Handle Failiure

在你尝试操作你的结果之前做这件事

在这里,他们交替使用while循环。

在第一个getString(...)函数

之前调用res->next()