QT连接PostSql

1,再连接数据库前,我们需要提前创建好我们需要连接的数据库

例如  我创建的数据集名称为:roadmap数据集    然后里面有两个表   分别是roadinfo_tab   与roadmag_tab   然后我们需要记住我们创建的UserID;  Password;  Server;  Port 这些数据对于我们使用qt连接数据库有用

2,首先我们需要首先打开自己的qt软件  查看我们是否有连接postsql数据库的驱动

主要参考这个博主的(14条消息) Qt连接MySQL数据库最详细的教程_joey小天使的博客-CSDN博客_qtmysql 

对于我们这个   只需要看如下信息:

主要是这个代码:


    qDebug()<<"available drivers:";
    QStringList drivers = QSqlDatabase::drivers();
    foreach(QString driver, drivers)
        qDebug()<<driver;

首先先执行如下步骤:也即是在pro里面添加QT += sql

然后把上面的代码放在如下图的文件里面,然后运行   

需要添加的头文件如下:

#include<QSqlDatabase>
#include<QDebug>
#include<QSqlQuery>

 运行后  查看结果里面是否含有"QPSQL"   也即是如下图;

 倒数第二个    如有  才能继续进行   如没有  

 则可以参考这个博主的方法   不过这个博主主要是进行连接   mysql的  大家可以参考一下。

(14条消息) Qt连接MySQL数据库最详细的教程_joey小天使的博客-CSDN博客_qtmysql

3,在查看自己有postsql的驱动器后   我们需要激活下

可以查看这个博主的方法  

(14条消息) QT 连接 PostgreSQL 10 驱动问题解决_蓝壳的博客-CSDN博客

操作 如下图:

1,这个步骤上面已经做过   无需在做

在第二个步骤时,你需要先构建你的qt项目得到一个debug文件   

 2,按照步骤找到教程里说的,把那些文件放在这个debug里面,结果如下:

4,在前3步完成后   第四步就简单了

首先找到 在postsql的安装目录下找到include文件夹,以及lib文件夹,并把下面的两行代码放在qt的项目文件夹下,路径记得改成自己的文件路径 :
INCLUDEPATH += "E:/PostgreSQL/10/include"
LIBS +="E:/PostgreSQL/10/lib/libpq.lib"

结果如图所示: 

 下面进行连接数据库,首先第一步先验证直接是否已经可以连接数据库了

代码如下:

由于我的是“UserID=postgres;Password=postgres;Server=127.0.0.1;Port=5432;Database=roadmap”这样的所以对应的连接数据库的代码如下:

   QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");
        db.setHostName("127.0.0.1");  #     需要改成自己的对应的端口号
        db.setDatabaseName("roadmap");#这个是自己创建的数据集   需要改成自己的创建的数据集
        db.setPort(5432);#需要改成自己的
        db.setUserName("postgres");#用户名  也需要改成自己的
        db.setPassword("postgres");#用户密码   需要改成自己对应的
        bool ok = db.open();
        if (ok){
               QMessageBox::information(this, "infor", "success");
           }           
else {         
          QMessageBox::information(this, "infor", "open failed");      
}

直接把这个代码放在如下位置,按照下图放置就ok

记得把头文件放好,头文件如下:

#include<QSqlDatabase>
#include<QDebug>
#include<QMessageBox>

   #include<QSqlQuery>

#include <libpq-fe.h>#这步如果报错的话   需要查看你的第三步是否完成   如果已经完成仍然报错   先执行一下如下操作  应该就好了   

 

这几个头文件放在这下图对应的位置

 然后运行,应该会出现如下结果:

如出现这个结果也即是连接数据库成功!!!

下面是如何取出自己创建的数据集里面的数据:

代码如下:

    QSqlQuery query(db);
     query.exec("SET NAMES 'Latin1'");//使数据库支持中文(此处很重要)
     QString sql=QString("select *from roadinfo_tab");   #这个地方需要改成自己数据集里面的表的名字 
     bool okopen= query.exec(sql);
     if(okopen)
     {
       QMessageBox::about(NULL, "Save1", "save new database success1");
     }
     else
     {
      QMessageBox::about(NULL, "Save1", "error save new database1");
      }
      query.exec(sql);
      while(query.next())
      {               
        int id = query.value(0).toInt();   #0就是指取出你表里面的第一列数据
        qDebug()<<QString("id:%1").arg(id);        #这个是输出你取出的数据   
      }               

如果你直接复制的话   需要将代码对齐    不然会报错

也即是放在这个位置:

然后运行就可以得出如下结果:

 我的数据集roadmap里面的roadinfo_tab表里面的数据如下:

可以对比以上两个数据:可以看出qt运行得出的数据和你创建的数据集里面的数据一样。也即是实现了qt成功连接了postsql,并且也可以取出postsql里面的数据。。。。

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值