QT Sql错误:未定位在有效记录上
我无法使用QODBC运行Select查询(不需要QMysql)。它们抛出QT Sql错误:未定位在有效记录上,sql,qt,odbc,Sql,Qt,Odbc,我无法使用QODBC运行Select查询(不需要QMysql)。它们抛出QSqlQuery::value:未定位在有效记录上。但是,其他查询运行良好 Stackoverflow上有其他线程处理同一问题。但是没有一个能解决我的问题。这里有一些 QSqlDatabase db=QSqlDatabase::addDatabase(“QODBC”); setDatabaseName(“Driver={MySQL ODBC 8.0 UNICODE Driver};DATABASE=dbname;”;
QSqlQuery::value:未定位在有效记录上
。但是,其他查询运行良好
Stackoverflow上有其他线程处理同一问题。但是没有一个能解决我的问题。这里有一些
QSqlDatabase db=QSqlDatabase::addDatabase(“QODBC”);
setDatabaseName(“Driver={MySQL ODBC 8.0 UNICODE Driver};DATABASE=dbname;”;
db.setUserName(“根”);
db.setPassword(“mysql”);
如果(!db.open()){
qDebug()您的查询结果为空。在访问query.value(“name”)
之前,请先检查query.first()
是否为astrue
,然后再输入if条件
i出现错误QSqlError(“0”,“QODBC3:无法获取第一个”,“[iODBC][驱动程序管理器]可选功能未实现”)
我正在使用Mac。如何解决这个问题?请查看QtQuery的Qt文档prepare()
。问题可能存在于您特定的OS/ODBC驱动程序中。您也可以直接测试query.exec(“从id=1的用户中选择id,名称”);
不起作用。我跳过了prepare()语句,并将该语句放在exec()中。是否还有其他出路
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName("Driver={MySQL ODBC 8.0 UNICODE Driver};DATABASE=dbname;");
db.setUserName("root");
db.setPassword("mysql");
if (!db.open()) {
qDebug() << db.lastError();
} else {
QSqlQuery query;
query.prepare("SELECT id, name FROM users where id=1;");
if (!query.exec())
{
qDebug() << "SQL error: "<< query.lastError().text() << endl;
}
query.first();
qDebug() << query.value("name").toString() ;
}