当前位置: 首页 > news >正文

QT中加载PSQL驱动

如果还是不行,建议将PostgreSQL安装目录中bin文件夹下所有的dll文件全部拷贝至程序可执行文件同级目录中,确保驱动能够正确加载后,再一中共个个试验,把冗余的dll文件删除。

#include "MainWindow.h"#include <QApplication>
#include <QCoreApplication>
#include <QApplication>
#include <QDebug>
#include "duckdb.hpp"
#include <QElapsedTimer>
#include <QSqlQueryModel>#include <QSqlDatabase>
#include <QSqlQuery>
#include <QElapsedTimer>
#include <QDebug>
#include <QSqlDatabase>
#include <QDate>
#include <QTime>using namespace duckdb;
int main(int argc, char *argv[])
{QApplication a(argc, argv);// ===================== PostgreSQL ====================={QString path = "D:/Demo/untitled8/sqldrivers";QCoreApplication::addLibraryPath(path);qDebug() << "Qt library paths:" << QCoreApplication::libraryPaths();qDebug() << "Available SQL drivers:" << QSqlDatabase::drivers();QSqlDatabase db2 = QSqlDatabase::addDatabase("QPSQL", "psql");db2.setHostName("localhost");db2.setDatabaseName("postgres");db2.setUserName("postgres");db2.setPassword("Jatjat!@#$%");db2.setPort(5432);if (!db2.open()) {qDebug() << "PostgreSQL open failed:" ;} else {QSqlQuery query(db2);query.exec("DROP TABLE IF EXISTS dates");query.exec("CREATE TABLE dates (d DATE, t TIME, ts TIMESTAMP)");// 插入 100 万条数据db2.transaction();query.prepare("INSERT INTO dates (d, t, ts) VALUES (?, ?, ?)");QElapsedTimer timer1;timer1.start();for(int i=0;i<1000000;++i){query.addBindValue(QDate(1992,1,1));query.addBindValue(QTime(1,1,1));query.addBindValue(QDateTime(QDate(1992,1,1), QTime(1,1,1)));query.exec();}db2.commit();qDebug() << "PostgreSQL 插入耗时(ms):" << timer1.elapsed();// UPDATE 测试QElapsedTimer timer2;timer2.start();db2.transaction();query.exec("UPDATE dates SET ts = '2025-01-01 01:01:01' WHERE d = '1992-01-01'");db2.commit();qDebug() << "PostgreSQL UPDATE 耗时(ms):" << timer2.elapsed();// SELECT 查询测试QElapsedTimer timer3;timer3.start();query.exec("SELECT * FROM dates");int rowCount = 0;while(query.next()) {++rowCount; // 可以只计数,不取值,避免额外开销}qDebug() << "PostgreSQL SELECT 耗时(ms):" << timer3.elapsed()<< "行数:" << rowCount;}}// ===================== DuckDB ====================={DuckDB db("D:/test.duckdb");Connection con(db);con.Query("DROP TABLE IF EXISTS dates");con.Query("CREATE TABLE dates (d DATE, t TIME, ts TIMESTAMP)");Appender appender(con, "dates");QElapsedTimer timer;timer.start();for(int i = 0;i< 1000000;++i){appender.AppendRow(Value::DATE(1992, 1, 1),Value::TIME(1, 1, 1, 0),Value::TIMESTAMP(1992, 1, 1, 1, 1, 1, 0));}appender.Flush(); // 提交数据qDebug()<< "DuckDB 插入耗时(ms):"<< timer.elapsed();// UPDATE 测试QElapsedTimer timer2;timer2.start();con.Query("UPDATE dates SET ts = '2025-01-01 01:01:01' WHERE d = '1992-01-01'");qDebug() << "DuckDB UPDATE 耗时(ms):" << timer2.elapsed();// SELECT 查询测试QElapsedTimer timer3;timer3.start();auto result = con.Query("SELECT * FROM dates");int rowCount = result->RowCount();qDebug() << "DuckDB SELECT 耗时(ms):" << timer3.elapsed()<< "行数:" << rowCount;}// ===================== SQLite ====================={QSqlDatabase db1 = QSqlDatabase::addDatabase("QSQLITE");db1.setDatabaseName("D:/test.sqlite");if (!db1.open()) {qDebug() << "not open SQLite";}QSqlQuery query(db1);query.exec("DROP TABLE IF EXISTS dates");query.exec("CREATE TABLE IF NOT EXISTS dates (d TEXT, t TEXT, ts TEXT)");// 插入 100 万条数据db1.transaction();query.prepare("INSERT INTO dates (d, t, ts) VALUES (?, ?, ?)");QElapsedTimer timer1;timer1.start();for (int i = 0; i < 1000000; ++i) {query.addBindValue("1992-01-01");query.addBindValue("01:01:01");query.addBindValue("1992-01-01 01:01:01");query.exec();}db1.commit();qDebug() << "SQLite 插入耗时(ms):" << timer1.elapsed();// UPDATE 测试QElapsedTimer timer2;timer2.start();db1.transaction();query.exec("UPDATE dates SET ts = '2025-01-01 01:01:01' WHERE d = '1992-01-01'");db1.commit();qDebug() << "SQLite UPDATE 耗时(ms):" << timer2.elapsed();// SELECT 查询测试QElapsedTimer timer3;timer3.start();query.exec("SELECT * FROM dates");int rowCount = 0;while(query.next()) {++rowCount;}qDebug() << "SQLite SELECT 耗时(ms):" << timer3.elapsed()<< "行数:" << rowCount;}return a.exec();
}

http://www.dtcms.com/a/470150.html

相关文章:

  • 杭电 神经网络与深度学习 学习笔记
  • 网站建设合优企业做国外网站多少钱
  • 网站建设 主要学是么服装详情页设计
  • 自适应编码调制简介
  • MySQL实战篇05:MySQL主从复制Docker实战(上)——1主2从集群搭建与问题解决
  • 金融网站建设方案ppt模板重庆建设厅官网
  • 从源码优化外卖配送系统:算法调度、智能推荐与数据分析应用
  • 百宝图建设工程电子网站网络公司如何建网站
  • vscode 远程管理docker时,提示权限不足无法获取容器列表问题
  • 定制营销型网站什么意思wordpress建立移动m站
  • 石家庄无极网站建设网站开发实战项目
  • AI智能体(Agent)大模型入门【12】--基于llamaindex框架,fastapi框架实现大模型聊天基于mysql存储的历史对话进行聊天
  • 射频噪声干扰、调频调幅干扰仿真及SAR成像实现
  • 基于 Azure API Management 的企业级 AI 服务网关实现
  • MATLAB绘制9种最新的混沌系统
  • 潍坊网站建设潍坊佛山网站快速排名提升
  • 基于MATLAB的MIT-BIH ECG数据PQRST波定位实现
  • 物联网平台软件知道一个网站怎么知道是谁做的百度优化
  • MATLAB绘制多种混沌系统
  • 通信协议总结
  • starrocks表模型
  • 中国重庆网站建设vs2008不能新建网站
  • 个人二级网站怎么做任房保障和城乡建设局网站
  • 企业网站主页设计图微信小程序超市平台
  • 《MCU职位》面试问题
  • 用于化学绘图与IUPAC命名:InDraw 软件的基本使用指南
  • 网页设计与网站建设设计报告建设银行网站查余额
  • 网站meta 优化建议做网站的程序员进什么公司好
  • 【电路】电容的频率特性与通阻范围计算详解
  • LLM 笔记 —— 05 有关影像的生成式 AI