使用QT5连接到ACCDB

时间:2015-02-01 14:00:59

标签: c++ database qt ms-access qsqldatabase

我想要做的是从目录中找到所有.db(Paradox)文件并将它们保存到.mdb。问题是,如果这项工作正常,我首先尝试打开一个ACCDB(.db和.mdb我将使用的资源只能在我学校的内部网络中使用)。

我已经检查了,我在Qt目录中找到了sql驱动程序,我还在我的pro文件中添加了QT + = sql,我已经安装了访问权限数据库引擎,也安装了VBA,但我无法打开连接。我还没有尝试连接到SQLITE数据库来尝试它是否有效,但我猜它会。这是从按钮触发的代码:

db.addDatabase("QODBC");
explorador.setFileMode(QFileDialog::Directory);
ruta=explorador.getExistingDirectory(this,"Seleccionar directorio");
directorio.setPath(ruta);
subdir=directorio.entryList(QDir::AllDirs);
//La lista comienza en el 2º elemento
for(int i=2;i<subdir.size();i++)
{
    subruta=ruta+"/"+subdir.at(i);
    directorio.setPath(subruta);
    db.setDatabaseName("DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ="+subruta+"/Base de datos11.accdb");
    bool check=db.open();
    if(check)
        {
            dbg.setText("Prueba");
            dbg.show();
        }
    else
    {
        dbg.setText("Pruebaaa");
        dbg.show();
    }

}

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:0)

我最终解决了它绕过访问的那种情况。如果其他人正在努力解决这个问题,你需要:

-Paradox数据库引擎(确保您下载的版本与.db文件匹配)

-Jet engine 4.0或更高版本

-access 2007(以下版本删除了Paradox数据库连接)

- 访问数据库引擎文件夹(jet和paradox)的管理员权限

只需通过连接或数据库对象打开数据库。 Sintax应该是这样的(通过访问中的VBA模块):

database.open(path,*不要记住这里的内容,*这里是读/写许可,&#34; Paradox 5.x&#34;)

路径应指向包含一个或多个.db文件的文件夹,该文件夹将作为单个数据库打开,文件为表。它实际上创建了一个新的数据库(.accdb或.mdb,取决于你如何保存它)

这不完全是这样,但我在我的笔记本电脑上。我在代码前面编辑答案

对不起,这不是一个c ++的答案,但是从我发现的情况来看,使用paradox数据库是一种痛苦。希望这有助于其他人的斗争。

里卡多