내가 PostgreSQL을 9.1, Qt는 4.8.4을 사용하고 제대로 QT에 대한 PostgreSQL의 드라이버를 구성한 아무것도하지 않고 내 문제는 옆에 PostgreSQL을합니다 작은 프로그램을 사용하여 데이터베이스를 테스트해야하며, 프로그램과 데이터베이스 간의 연결이 정상적으로 작동하는 한 .open() 메서드는 오류를 반환하지 않지만 테이블에 무언가를 삽입하려고하면 오류가 발생합니다. 그것은 단지 그것을하지 않습니다. 아무런 경고도 표시되지 않고 오류도 표시되지 않습니다. 터미널에서 DB를 볼 때 이전과 같아서 아무 일도 일어나지 않습니다 ...삽입 9.1이 작동하는 것 같다하지만 (QT 포스트 그레스 드라이버)
무슨 일입니까? 그건 그렇고 내가 우분투 12.06 64 비트를 사용하여 내 코드는 다음과 같습니다 (방금 QT 위젯 코드 생략), 고마워! :
//Respective headers
int main(int argc, char *argv[])
{
QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");
db.setHostName("localhost");
db.setDatabaseName("database");
db.setUserName("user");
db.setPassword("somepass");
if(!db.open())
{
cout << "Database cannot be opened";
}
//Unitl here no errors
QString consulta = "Insert into productos values ('25','25','25)";
//db.transaction();
QSqlQuery query(db);
query.prepare(consulta); //Here tried to pass directly the string with same results
query.exec(); //Even omitted .prepare but nothing
query.finish();
cout << "Rows affected: " << query.numRowsAffected();
// db.commit();
//Finishes ok but no errors
}
어느 것이 올바른 방법입니까? 덕분에
이시죠 경찰서 데이터베이스 문제가 직접 psql의 쿼리가
왜'db.commit이다() 이라고 코멘트했다. 주석 처리하지 않으면 어떻게됩니까? – kgrittn
'query.exec()'성공한 경우'true'를 리턴하고 그렇지 않으면'false' 인 경우 query.lastError()를 보시오. – SpongeBobFan
또 다른 디버그 아이디어 (미래의 목적을 위해 이제 오류가 발생 함) 분명히) pgadmin 또는 일부 oter 도구에 쿼리 문자열을 복사하여 거기서 실행하려고하면 쿼리의 오류를 쉽게 찾을 수 있습니다. – SpongeBobFan