2012-10-17 4 views
0

저는 초급자입니다. 제 질문은 약간 기본이 될 수도 있습니다.Qt의 QtSql 라이브러리를 사용하려면 SQL 서버가 필요합니까?

내 의도는 내 하드 드라이브에있는 ODBC 데이터베이스로 작업하는 것입니다. 나는이 코드를 열 것을 시도했다 :

QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); 
db.setHostName(""); 
db.setDatabaseName("c:\\database.mdb"); 
bool ok = db.open(); 
QSqlQuery query; 
query.exec("SELECT name FROM results WHERE tag>10"); 
while (query.next()) { 
    QString name1 = query.value(0).toString(); 
    qDebug() << name1; 
} 

이제 문제는 프로그램이 db.open() 라인에 실패, 데이터베이스를 찾을 수 없다는 것입니다. Qt가 데이터베이스를 직접 열 수는 없지만 대신 SQL 서버를 처리해야합니다. 이거 뭡니까? 그렇다면 호스트 이름과 관련하여 앞으로 나아갈 방법에 대한 단서를 알려 주시면 감사하겠습니다 (localhost입니까?).

또한 파일 경로가 DatabaseName에 포함되어야하는지 여부는 확실하지 않습니다.

추신 : 다른 종류의 데이터베이스/서버로 이전하는 데 문제가 없습니다. MySQL. 그래서 당신의 솔루션이 이것을 요구한다면, 나는 그것에 만족할 것입니다! 사전

D

답변

0

:

Werne Strydom이하는 setDataBaseName의 인수가 데이터베이스 파일 이름,하지만 데이터베이스를 가리키는 ODBC 데이터 소스의 이름이 아닌 말했다 것처럼. 따라서 데이터베이스를 가리키는 ODBC를 만들어야합니다.

이 작업을 수행하는 일반적인 방법은 제어판 \ 시스템 & 보안 \ 관리 도구 \ 데이터 원본 (ODBC)입니다. 그러나 64 비트 컴퓨터에서 32 비트 드라이버로 작업하려면 C : \ windows \ SysWOW64로 이동하여 odbcad32.exe를 실행하십시오.

이렇게하면 대화 상자가 열립니다 대화 상자는 64/32 비트와 관계 없음). 여기에서 ODBC를 만들고 이름을 지정하고 실제 데이터베이스에 연결합니다. 필자의 경우, 로컬 데이터베이스로 작업 할 때 "사용자 DNS"탭을 사용했습니다.

그런 다음 Qt로 돌아가서 해당 ODBC 이름을 setDatabaseName의 인수로 지정합니다. 그리고 그것은 작동합니다!

코드의 새로운 비트처럼 보이는 (또는 ... 나를 위해 한) :

"MyDataSource를가"나는 ODCB에게 준 이름이다
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); 
db.setHostName("localhost"); 
db.setDatabaseName("MyDataSource"); 
bool ok = db.open(); 
QSqlQuery query; 
query.exec("SELECT name FROM results WHERE tag>10"); 
while (query.next()) { 
    QString name1 = query.value(0).toString(); 
    qDebug() << name1; 
} 

.

0

에서

덕분에 documentation에 따르면, 당신은 ODBC 데이터 소스로하는 setDataBaseName을 설정해야합니다. 그런 다음 적절한 파일을 가리 키도록 ODBC 데이터 소스를 구성합니다.

+0

안녕하세요. Werner. 답장을 보내 주셔서 감사합니다. 내가 제공 한 링크를 확인했지만 중국어로 된 것입니다. 조금 더 자세히 설명해 주시겠습니까? – DrD

+0

'db.setDatabaseName ("BOB");'BOB는 ODBC 데이터 소스이다. ODBC 데이터 소스'BOB'를 생성하고'c : \\ database.mdb'를 사용하도록 설정하십시오. 여기서는 Windows에서 실행 중이며 ODBC 데이터 소스를 구성하는 방법을 알고 있다고 가정합니다. – bloudraak

+0

ODBC 데이터 소스를 정의하십시오 :) BOB의 예제를 제공해 주시겠습니까? 그것은 길입니까? 운전자? .exe? – DrD

1

특별히 Jet/MS Access 형식 데이터베이스가 필요하지 않으면 SQLite을 사용하는 것이 좋습니다. Qt는 SQLite가 내장되어 있습니다 (QSQLITE 드라이버) - 데이터베이스 파일을 가리키면됩니다. ODBC 데이터 소스 등을 설정할 필요가 없습니다. 나중에 참조 할 수 있도록

+0

감사합니다 davidg, 나는 그것을 고려할 것입니다. – DrD

관련 문제