2014-06-19 5 views
0

저는 Ubuntu 13.10에서 Qt-5.0.2로 작업 중입니다. QODBC 플러그인을 구축했지만 db 서버에 액세스 할 수 없습니다. 여기 내 코드는MS SQL DB 서버에 연결할 수 없습니다.

여기
#include <QCoreApplication> 
#include <QtSql> 
#include <QtDebug> 
#include <QSqlError> 

int main(int argc, char *argv[]) 
{ 
    QCoreApplication a(argc, argv); 

    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); 
    db.setConnectOptions(); 

    QString dsn = QString("DRIVER={PATH};SERVER=win-l54oh3ekuur;DATABASE=LALCPlanner;UID=webdev;PWD=password;"); 


    db.setDatabaseName(dsn); 

    if(db.open()) 
    { 
     qDebug() << "Opened"; 

     QSqlQuery qry; 
     if(qry.exec("select * from [TestStatus]")) 
     { 
      while(qry.next()) 
      { 
       qDebug() << qry.value(0).toString(); 
       qDebug() << qry.value(1).toString(); 
      } 
     } 

     else 
      qDebug() << "ERROR =" << db.lastError().text(); 

     qDebug() << "Closing!"; 
     db.close(); 
    } 

    else 
    { 
     qDebug() << "ERROR =" << db.lastError().text(); 
    } 

    return a.exec(); 
} 

{PATH}입니다 내가 "는/usr/lib 디렉토리/I386-리눅스 GNU/qt5/플러그인/sqldrivers"

때의 .bashrc 파일에 내 보낸 경로 I 프로젝트를 실행하면 오류는 다음과 같습니다.

ERROR = "[unixODBC][Driver Manager]Data source name not found, and no default driver specified QODBC3: Unable to connect" 

Btw : 코드가 Windows에서 제대로 작동합니다.

답변

1

코드가 실제로 Windows에서 작동하는 이유는 실제로 DRIVER = {}에 넣은 이름의 드라이버가 있기 때문입니다. DRIVER에서 디렉토리를 전달할 수는 없으며 odbcinst.ini 파일에 정의 된 드라이버의 이름이거나 드라이버 공유 객체의 전체 경로 여야합니다.

우분투 컴퓨터에 설치 한 ODBC 드라이버는 언급하지 않지만 MS Access 파일을 읽을 수있는 Ubuntu 용 드라이버는 2 개만 알고 있습니다.이 드라이버는 Easysoft 및 MDB 도구입니다. 이 문제와 관련한 문제). Easysoft가 공유에서 MDB를 읽지 만 (공유가 어느 쪽이든 될 수 있지만) 이들 중 어느 것도 마술로 원격 컴퓨터 (SERVER = xxx에 의해 암시 된)에서 MS Access DB를 열 수 없습니다.

+0

odbcinst 파일이 비어 있기 때문에 DRIVER 부분을 채우라는 내용을 말해 줄 수 있습니까? 또한 MS SQL Server는 액세스 할 수 없습니다. 그리고 unixODBC를 사용하고 있습니다. – ishan3243

+0

질문에 "MS Access DB 서버에 연결할 수 없습니다"라는 질문을 변경했습니다. – bohica

+0

사용중인 ODBC 드라이버와 방법/위치를 말할 수있는 경우가 아니면 아무도 odbcinst.ini 파일에 넣을 내용을 알려줄 수 없습니다. – bohica

관련 문제