我正在使用 qt 4.8 和 psql 驱动程序连接到 postgres 9.1 数据库。
我正在做一个通用库来连接并插入数据库;几乎所有方法都准备好了,但在最后一个方法中,我需要从表中进行选择以将值插入到另一个表中。当我尝试选择语句时,它的行为有所不同。依次根据代码,但我所做的任何测试都没有产生正确的解决方案。这是我的代码:
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 控制台中替换它,我会得到一个肯定的匹配,所以问题不在于插入或格式化数据的方式,而是检索查询的方式我相信但是不知道如何解决这个有什么想法吗?谢谢