2011-07-05 6 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