我有一个简单的QT程序来读取sqlite3数据库。令人讨厌的是,当实际数据库作为映射驱动器(Windows 7)在网络上时,我的程序失败,但当数据库在本地驱动器上时,我的程序会运行。我正在使用的代码低于实验目的。
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:会成功。
答案 0 :(得分:1)
至少在Windows Vista中,有一个安全设置控制是否允许应用程序访问网络共享。
互联网安全设置(可通过Internet Explorer访问)和访问网络共享之间也存在依赖关系。