我有一个我想在 Qt 中解析的 csv 文件。我想使用 sql 插件,但我不确定如何设置。我目前无法.csv
从我的 Qt 应用程序打开文件——我必须手动打开它然后启动我的应用程序以希望从中查询。
如果在我开始我的应用程序之前没有手动打开我尝试读取的文件,我会收到以下驱动程序错误:
[Microsoft][ODBC Excel Driver] External table is not in the expected format.
[Microsoft][ODBC Excel Driver] General Warning Unable to open registry key 'Temporary (volatile) Jet DSN for process 0x1ae0 Thread 0x1f2c DBC 0x4c52a4 Excel.' QODBC3: Unable to connect.
这是我的设置...
Qt Creator 构建/版本:
- 我在不是从源代码构建的 Qt 5.3 中工作——我下载了安装程序。
- 我已经配置了一些调试工具包,但我目前使用的工具包使用的是 MSVC 2012 openGL 32 位编译器(我已将其设置为默认值)。
- 我的机器上有 Visual Studio 2012 和 2010,它是 64 位的。
- 我不必制作 sql 驱动程序,它们已经安装(可用驱动程序:()(“QSQLITE”、“QMYSQL”、“QMYSQL3”、“QODBC”、“QODBC3”、“QPSQL”、“QPSQL7”) )
我的 .pro 文件挂钩到 sql 插件:
QT += core gui network sql
我有以下内容:
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
这是我建立 Excel 数据库连接并尝试查询的代码:
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
QString pathString = QString("C:\\MY_FILES\\test_work\\Xena\\Xena2544-2G\\Reports\\asdf_SN1_RFC2544_7_port_verify.csv");
db.setDatabaseName("DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" + pathString );
if (!db.open())
{
QSqlError er = db.lastError();
QMessageBox::information(0, "Error", er.text());
}
if(db.open())
{
QSqlQuery query("select * from [" + QString("asdf_SN1_RFC2544_7_port_verify") + "$B13]"); //NEVER GETS HERE UNLESS i ALREADY MANUALLY OPENED THE FILE BEFORE RUNNING CODE.
QString process1Result = query.value(0).toString();
ui->verifyUnit1Status_lb->setText(process1Result);
}
文件权限 - 完全控制 - 修改 - 读取和执行 - 读取 - 写入
我真的很想实现这个功能。我会假设错误出现在连接字符串中,但此时我已经尝试了几个小时但没有成功。
先感谢您。