2011-07-05 5 views
0

sqlite3 데이터베이스를 읽는 간단한 QT 프로그램이 있습니다. 실제 데이터베이스가 네트워크에 매핑 된 드라이브 (Windows 7)로 존재하지만 데이터베이스가 로컬 드라이브에있을 때 내 프로그램이 작동하지 않으면 내 프로그램이 실패합니다. 내가 사용하고있는 코드는 실험 목적을 위해 아래에 있습니다.Sqlite3 network oddity

QFileInfo fileInfo(m_lastDatabaseFile); 
    QString host = fileInfo.canonicalPath(); 
    QString filename = fileInfo.fileName(); 
    m_dataBase = QSqlDatabase::addDatabase("QSQLITE"); 
    m_dataBase.setHostName(host); 
    m_dataBase.setDatabaseName(filename); 
    qDebug() << " valid: " << m_dataBase.isValid(); 
    if (m_dataBase.open()) 
    { 
     QStringList tableList = m_dataBase.tables(QSql::Tables); 
     qDebug() << "Database open."; 
     QSqlQuery query = m_dataBase.exec("SELECT * FROM PallolBoards"); 

     qDebug() << "Found: " << query.size(); 
     if (query.size() <= 0) 
     { 

      QSqlError err = query.lastError(); 
      qDebug() << "Last error: " << err.text(); 

     } 
     while (query.next()) 
     { 
      QString title = query.value(0).toString(); 
      qDebug() << "Query: " << title; 
     } 
    } 
    else 
    { 
     QMessageBox::critical(this,"Invalid database",m_dataBase.lastError().text()); 
    } 

아무 단서? 그래서 H : 실패하지만 D : 성공합니다.

답변

1

적어도 Windows Vista에는 응용 프로그램이 네트워크 공유에 액세스 할 수 있는지 여부를 제어하는 ​​보안 설정이 있습니다.

또한 인터넷 보안 설정 (예 : 인터넷 탐색기를 통해 액세스 가능)과 네트워크 공유에 대한 액세스간에 종속성이 있습니다.

+0

예. 정확하고 성가신. 또한 내 코드는 단순했다. 아 ~. – ExpatEgghead