Qt5.10利用OCI读取Oracle数据库

QT支持多种数据库的读写,因为本身安装包中就有数据库驱动,但是没有现成的oracle数据库读写的驱动需要手动编译才可以。有已经编译好的64位的oci驱动dll。

1.下载驱动

QT64位Oracle读写DLL下载
把下载好的驱动dll放到QT数据库驱动文件夹下面:C:\Qt\Qt5.10.0\5.10.0\msvc2015_64\plugins\sqldrivers

Qt5.10利用OCI读取Oracle数据库_第1张图片

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();
	}

你可能感兴趣的:(qt,数据库)