Reputation: 2713
I'm trying to do SELECT with DB MySql. This is code:
qDebug() << "status" << db.db().isOpen();
query.prepare("SELECT jobId FROM jobs");
and result is:
status true
QSqlQuery::prepare: database not open
How can I fix it?
Upvotes: 2
Views: 10476
Reputation: 11
QSqlQuery (
const QString & query = QString(),
QSqlDatabase db = QSqlDatabase()
)
QSqlDatabase QSqlDatabase::database (
const QString & connectionName = QLatin1String(defaultConnection),
bool open = true
) [static]
QSqlQuery query(
QString("SELECT jobId FROM jobs"),
QSqlDatabase::database("you name connection")
);
query.exec();
Upvotes: 0
Reputation: 2004
Here is a snippet I have written recently
//Add the database connection
QSqlDatabase m_db = QSqlDatabase::addDatabase("MYSQL", "m_db_connect");
//Set relevant settings
m_db.setHostName("127.0.0.1");
m_db.setDatabaseName("maindb");
m_db.setUserName("neox");
m_db.setPassword("12345567");
//Open the database
if(!m_db.open()) {
qWarning() << __FUNCTION__ << "Failed to open main database; aborting...";
qWarning() << __FUNCTION__ << m_db.lastError().text();
return false;
}
//Create query string
QString queryString("SELECT id from events");
QSqlQuery query(m_db, queryString);
//Check if the query has executed properly
if(!query.exec()) {
qWarning() << __FUNCTION__ <<":"<<__LINE__<<"Failed to fetch ids";
qWarning() << __FUNCTION__ <<":"<<__LINE__<<m_db.lastError().text();
return false;
}
QList<int> id_list;
//Here I check whether the select has returned any results and append them to the list
while(query.next()) {
int id = query.value(0).toInt();
id_list.append(id);
}
This has worked for me up to now, and I hope this is helpful
Upvotes: 0