我正在使用qt 4.8和psql驅動程序連接到postgres 9.1數據庫。qt選擇不與where語句工作
我正在做一個通用庫來連接並插入數據庫;幾乎所有方法都已準備就緒,但在最後一個方法中,我需要從表中進行選擇以將值插入另一個表中。當我嘗試select語句時,它的行爲有所不同。根據代碼反過來,但沒有一個我做的測試導致了一個正確的解決方案。 這裏是我的代碼:
struct enfriadores enf;
enf.horaE=time(&enf.horaE);
enf.horaS=time(&enf.horaS)+1900;
//base1.insertaEvento(db,enf);
QString consulta = "Select id_evento from eventos where extract(epoch from horae)=:hora_bus";
QDateTime hora_bus(QDateTime::fromTime_t(enf.horaE));
//qDebug()<< enf.horaE;
QSqlQuery query(db);
query.prepare(consulta);
query.bindValue(":hora_bus",hora_bus);
query.exec();
query.first();
while(query.next())
{
int valor = query.value(0).toInt();
qDebug() << valor << endl;
}
的base1.insertaEvento是一類我也插在哪裏之後,我需要提取ID表數據的調用。
qDebug() << enf.horaE;
我把它知道,如果時間是正確的形式之前,我把它附加到查詢,順便說一句,是正確的。 horaE取自我在前面提到的類中聲明的結構。
當我運行查詢,因爲它與它運行良好的while(query.next())
但返回任何結果,如果我刪除了while循環,但仍維持query.next()
編譯器返回
QSqlQuery::value: not positioned on a valid record
0
我使用query.first嘗試()方法和query.setForwardOnly(true),但結果相同。
另外,如果我用qDebug()嘗試hora_bus的值並直接在psql控制檯中替換它,我會得到一個肯定的匹配,所以問題不在於數據插入或格式化的方式,而是查詢的方式檢索我相信但不知道如何解決這個 任何想法? 感謝
試過,但我得到了下一個錯誤: 「錯誤:從'time_t {aka long int}'轉換爲'const QVariant'是不明確的」,如果我通過QDatetime並檢查它的值,它可以正常工作... –
@克羅諾斯:好的,看我的編輯。但是當你說你檢查它的值是在你的程序中完成的,而不是在postgresql中。這曾經被轉換爲一個SQL參數,該值並非您所期望的。 –