编辑
跟进问题:mysql resultset is always null
--
resultset似乎是空的,而且我确信表是存在的,没有抛出SQLException。它应该打印计数,但它没有。
CDatabase报头
class CDatabase
{
bool verify(string, string);
public:
sql::Connection *con;
CDatabase();
~CDatabase();
};CDatabase::CDatabase
con = driver->connect("", "", "");
con->setSchema("");CDatabase::verify
bool CDatabase::verify(string channel, string hyper_key)
{
if (!con) return false;
try
{
sql::Statement *stmt;
sql::ResultSet *res;
stmt = con->createStatement();
stmt->execute("SELECT COUNT(*) FROM dark_souls2_widgets");
res = stmt->getResultSet();
cout << res->rowsCount();
delete stmt;
delete res;
}
catch (sql::SQLException &e) {
cout << "# ERR: SQLException in " << __FILE__;
cout << "(" << __FUNCTION__ << ") on line »" << __LINE__ << endl;
cout << "# ERR: " << e.what();
cout << " (MySQL error code: " << e.getErrorCode();
cout << ", SQLState: " << e.getSQLState() << " )" << endl;
return false;
}
return false;
}发布于 2014-07-26 22:00:09
它不应该显示计数,它应该显示1,因为这个查询要么失败,要么结果只有一行。如果您想知道您的表dark_souls2_widgets中有多少行,那么您可以使用
res = stmt->getResultSet();
while (res->next()) {
cout << res->getInt(1); // getInt(1) returns the first column
}发布于 2014-07-26 22:09:25
我已经有一段时间没有在c++上使用mysql了,但我想试一试.这是来自dev.mysql的一个例子
stmt = con->createStatement();
res = stmt->executeQuery("SELECT 'Hello World!' AS _message");
while (res->next()) {
cout << "\t... MySQL replies: ";
/* Access column data by alias or column name */
cout << res->getString("_message") << endl;
cout << "\t... MySQL says it again: ";
/* Access column fata by numeric offset, 1 is the first column */
cout << res->getString(1) << endl;
}首先,我注意到您使用的是execute()而不是executeQuery()。最重要的是,如果rowsCount()成功的话,它总是1行,因为查询只返回1行,这是查询的结果。试试这个..。
stmt->executeQuery("SELECT COUNT(*) FROM dark_souls2_widgets");
res = stmt->getResultSet();
while (res->next()) {
cout << res->getInt(1);
}或者即使这样也能工作,因为它将选择每一行并输出返回的行数。
stmt->executeQuery("SELECT * FROM dark_souls2_widgets");
cout << res->rowsCount();编辑-试试这个
stmt = con->creteStatement()
res = stmt->executeQuery("SELECT COUNT(*) FROM dark_souls2_widgets");
while (res->next()) {
cout << res->getInt(1);
}https://stackoverflow.com/questions/24975838
复制相似问题