我正在使用VisualStudio 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")

曾经抛出的那个错误:



如果我完成了sql::SQlException抛出,则会得到以下日志:



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

有任何想法吗? :C

最佳答案

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

如果结果集为空,则调用getString()将失败。在继续之前检查结果。就像是:

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

在尝试操作结果之前,请执行此操作

Here他们交替使用while循环。

关于c++ - sql::InvalidArgumentException MySql C++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17294611/

10-17 03:08