我写了一个程序来访问Microsoft sql数据库。它在桌面上运行良好。但是当我在Android设备上运行相同的程序时,我收到了错误:
04-09 06:17:41.784:W / Qt(1240):kernel \ qsqlquery.cpp:368(bool QSqlQuery :: exec(const QString&)):QSqlQuery :: exec:数据库未打开
这是我的代码:
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName("Driver={SQL Server};Server=192.168.1.3;Database=sms_exp;");
db.setUserName("sa");
db.setPassword("xxxxxyy");
if(!db.open())
{
qDebug ("Error");
}
else
{
qDebug ("OK");
}
QSqlQuery query (db);
query.exec("SELECT item_code, item_des FROM prod_mast WHERE item_code = 0100000210");
while (query.next())
{
QString name1 = query.value(0).toString();
QString name2 = query.value(1).toString();
qDebug (qPrintable(name1));
qDebug (qPrintable(name2));
}
db.close();
答案 0 :(得分:0)
没有Android版本的ODBC驱动程序。如果你检查QSqlDatabase::drivers()
,你会发现Qt中的android只支持SQLite驱动程序。
在android上建立ODBC连接的唯一方法是使用支持客户端和服务器之间网络连接的JDBC-ODBC桥。 Android上的JDBC到Windows机器上的ODBC,然后到MS Access ODBC驱动程序。