Qt5.14.2编译oracle驱动问题

img


看网上说编译出错要加上这三行代码。不过第三行,


LIBPATH+=D:\Oracle11\product\11.2.0\dbhome_1\OCI\lib\MSVC//这个地方LIBPATH甚至都没有提示,这是为什么呢?

结果还是编译失败

你看看你的硬盘的对应路径上,是不是有这些目录和文件

  • 这篇文章讲的很详细,请看:QT5.12编译Oracle驱动
  • 除此之外, 这篇博客: Qt5.10利用OCI读取Oracle数据库中的 2.操作数据库 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 1.调用静态函数,创建数据库链接;

    QSqlDatabase db = QSqlDatabase::addDatabase("QOCI", "aewes");
    

    2.链接数据库:

    	db.setHostName(strHost);//主机IP
    	db.setUserName(strUserName);//用户名
    	db.setPassword(strPassword);//密码
    	db.setPort(port);//端口号
    	db.setDatabaseName(strDbName);//数据库名
    	if (!db.open()) {
    		qDebug() << QStringLiteral("++++++++++++++++++++++++++++++++++数据库连接失败!");
    	}
    
    

    3.插入数据:

    	QSqlDatabase db = QSqlDatabase::database("aewes");
    
    	QSqlQuery query(db);
    
    	//想要插入多条数据,必须多次运行insert into语句
    	query.prepare("insert into HYMP_TEST values (:id ,:name,:age)");
    
    	query.bindValue(":id", 1);
    	query.bindValue(":name", QStringLiteral("张三"));
    	query.bindValue(":age", 26);
    	query.exec();
    	db.commit();
    
    

    4.删除数据:

    	QSqlDatabase db = QSqlDatabase::database("aewes");
    	QSqlQuery query(db);
    	query.prepare("delete from HYMP_TEST where id = :id");
    	query.bindValue(":id", 1);
    	query.exec();
    	db.commit();
    
    

    5.更新数据:

    	QSqlDatabase db = QSqlDatabase::database("aewes");
    	QSqlQuery query(db);
    	query.prepare("update HYMP_TEST set name = :name , age = :age where id = :id");
    	query.bindValue(":name", QStringLiteral("李四"));
    	query.bindValue(":age", 89);
    	query.bindValue(":id", 1);
    	query.exec();
    	db.commit();
    
    

    6.查询数据:

    	QSqlDatabase db = QSqlDatabase::database("aewes");
    	QSqlQuery query(db);
    	query.exec("select * from HYMP_TEST");
    	QStringList list;
    
    	int rows = query.numRowsAffected();
    	int fieldNum = query.record().count();//字段数量
    	qDebug() << QStringLiteral("查询到的字段数:") << fieldNum;
    
    	while (query.next()) {
    		list << query.record().value(0).toString();
    		for (int i = 0; i < fieldNum; i++) {
    			qDebug() << query.record().value(i).toString();
    		}
    	}
    
    
    	QSqlDatabase db = QSqlDatabase::database("aewes");
    	QSqlQuery query2(db);
    	query2.prepare("select * from HYMP_TEST a where a.id = :id");
    	query2.bindValue(":id", 2);    
    	query2.exec();
    
    	QSqlRecord rec = query2.record();
    
    	int idxName = rec.indexOf("name");
    	while (query2.next()) {
    		qDebug() << query2.record().value(idxName).toString();
    	}
    
    
  • 以下回答由chatgpt基于相关博客总结生成:

    答案:

    从参考资料中并未找到需要添加三行代码的相关内容,因此无法给出具体的解决方案。建议检查添加的第三行代码是否正确,并查阅更多相关资料,尝试解决该问题。