qt 4.8과 psql 드라이버를 사용하여 postgres 9.1 데이터베이스에 연결합니다.qt는 where 문과 함께 작동하지 않습니다.
데이터베이스에 연결하고 삽입하기 위해 일반 라이브러리를 사용하고 있습니다. 거의 모든 메서드가 준비되었지만 마지막 메서드는 테이블에서 select를 수행하여 값을 다른 테이블에 삽입해야합니다. select 문을 시도 할 때 다른 동작을합니다. 코드에 따르면하지만 내가 만든 테스트 중 아무도 정확한 해결책을 찾지 못했습니다. base1.insertaEvento은 내가 ID를 추출해야합니다 이후 테이블에 데이터를 삽입 한 클래스에서 전화입니다
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;
}
: 다음은 내 코드입니다. The
qDebug() << enf.horaE;
내가 올바른 방법으로 시간을 입력했는지 알기 위해 질문에 첨부했습니다. horaE는 앞서 언급 한 클래스에서 선언 한 구조체에서 가져온 것입니다.
그것이 좋은 실행 while(query.next())
함께하지만 결과를 반환 내가 while 루프를 삭제하지만 여전히 유지하면 query.next()
컴파일러 내가 query.first를 사용하여 시도
QSqlQuery::value: not positioned on a valid record
0
를 반환으로 나는 쿼리를 실행하면() 메소드와 query.setForwardOnly (true)가 같지만 결과는 같습니다.
또한 hora_bus의 값을 qDebug()로 시도하고 psql 콘솔에서 직접 바꾸면 긍정적 인 결과가 나옵니다. 따라서 문제는 데이터가 삽입되거나 포맷 된 방식이 아니므로 쿼리가 검색 나는이 문제를 해결하는 방법을 모르지만 믿을 수 없다.
Warning: You must load the SQL driver and open the connection before a QSqlQuery is created. Also, the connection must remain open while the query exists; otherwise, the behavior of QSqlQuery is undefined.
데이터베이스에 대한 연결이 시간 초과되는 경우, 사용중인 변수 나 하나가 꺼집니다 : 감사
문서의 맨 끝에
시도했지만 그 다음 오류 : "오류 : 'time_t {일명 int int' '에서'const QVariant '모호합니다"변환 및 QDatetime을 전달하고 값을 확인하면 잘 작동합니다 ... –
@ 크로노스 : 알았어. 내 편집을 봐. 하지만 여러분이 값을 확인한다고하면 postgresql이 아니라 프로그램에서 끝난 것입니다. 그 값은 예상 한 값이 아닌 SQL 매개 변수로 변환됩니다. –