• 手把手教你用qt链接sqlserver数据库


    硬件:台式组装机

    系统:win10

    sqlserver版本:sqlserver2014

    qt版本:5.14.1

    Qt Creator版本:4.11.1

    安装sqlserver数据库的过程参见我的文章:win10安装SqlServer2014_GreenHandBruce的博客-CSDN博客

    打开SQL Server2014 Management Studio

     输入用户名和密码登录:

     右击数据库——新建数据库,设置数据库名为TestSql,所有者为sa,如下图:

     新建完成后,右击数据库——刷新,就能看到刚新建的数据库了,如下图:

     然后右击表——点击表(T)...,如下图:

     表里面添加几列,如下图:

     Ctrl+S保存,表名设为TableTopo,然后就能看到左侧多了一个表,如下图:

    右击ID行,设为主键,并设置标志范围:是,这样子是为了查询更快速,并且让表内数据有唯一标识符,如下图:


     

    然后保存,结果保存的时候跳出来这个报警:

     点击“工具”——“选项”——“设计器”,去掉“阻止保存要求重新创建表的更改”勾选项,如下图:

     然后就可以保存这个表了,接着右击该表——编辑200行,如下图:

    添加一些数据,如下图:

     然后打开SQL Server 2014 配置管理器,如下图:

    点击SQL Native Client 11.0配置——右击别名——新建别名:

    如下设置:

    停止SQL Server服务,如下:

     然后打开相关的1433端口,如下:

     

     然后打开sqlserver服务,如下:

    然后在系统程序和功能里面打开telnet功能:

     打开按下Windows键+R,输入cmd,回车,打开cmd命令行界面,输入

    telnet 127.0.0.1 1433

    来查看1433端口是否打开,如下图:

    如果回车后是黑界面,则1433端口已经打开了,如下图: 

     

     好,接下来是我们的qt代码环节了,新建一个qt工程:

     mainwindow.h代码如下:

    1. #ifndef MAINWINDOW_H
    2. #define MAINWINDOW_H
    3. #include <QMainWindow>
    4. #include <QSqlDatabase>
    5. #include <QSqlError>
    6. #include <QSqlQuery>
    7. #include <QDebug>
    8. QT_BEGIN_NAMESPACE
    9. namespace Ui { class MainWindow; }
    10. QT_END_NAMESPACE
    11. struct NodeInSql
    12. {
    13. int nNodeID;
    14. int nParentID;
    15. QString strNodeName;
    16. };
    17. class MainWindow : public QMainWindow
    18. {
    19. Q_OBJECT
    20. public:
    21. MainWindow(QWidget *parent = nullptr);
    22. void ConnectSql();
    23. ~MainWindow();
    24. private:
    25. Ui::MainWindow *ui;
    26. QList<NodeInSql> m_lstNodeInSql;
    27. };
    28. #endif // MAINWINDOW_H

    mainwindow.cpp代码如下:

    1. #include "mainwindow.h"
    2. #include "ui_mainwindow.h"
    3. MainWindow::MainWindow(QWidget *parent)
    4. : QMainWindow(parent)
    5. , ui(new Ui::MainWindow)
    6. {
    7. ui->setupUi(this);
    8. ConnectSql();
    9. qDebug()<<"nNodeID nParentID strNodeName:";
    10. for(int i = 0;i<m_lstNodeInSql.count();i++)
    11. {
    12. qDebug()<<m_lstNodeInSql[i].nNodeID<<","<<m_lstNodeInSql[i].nParentID<<","<<m_lstNodeInSql[i].strNodeName;
    13. }
    14. }
    15. void MainWindow::ConnectSql()
    16. {
    17. QSqlDatabase db= QSqlDatabase::addDatabase("QODBC", "dbTemp");
    18. db.setDatabaseName(QString("DRIVER={SQL SERVER};"
    19. "SERVER=%1;" //服务器名称
    20. "DATABASE=%2;"//数据库名
    21. "UID=%3;" //登录名
    22. "PWD=%4;" //密码
    23. ).arg("127.0.0.1,1433")//默认的sqlserver的端口号是1433
    24. .arg("TestSql")
    25. .arg("sa")
    26. .arg("**********")//填写你的sa账号的密码!!!!!!!!!!!!
    27. );
    28. //数据库连接
    29. bool ok = db.open();
    30. if(ok)
    31. {
    32. qDebug()<<"database open success";
    33. }
    34. else
    35. {
    36. qDebug()<<db.lastError();
    37. return;
    38. }
    39. //数据库查询
    40. QSqlQuery query(db);
    41. query.exec("SELECT * FROM TableTopo;");
    42. while(query.next())
    43. {
    44. NodeInSql node;
    45. if(query.value(1).isValid())
    46. node.nNodeID = query.value(1).toInt();
    47. if(query.value(2).isValid())
    48. node.nParentID = query.value(2).toInt();
    49. if(query.value(3).isValid())
    50. node.strNodeName = query.value(3).toString();
    51. m_lstNodeInSql.append(node);
    52. }
    53. db.close();
    54. }
    55. MainWindow::~MainWindow()
    56. {
    57. delete ui;
    58. }

    运行结果如下,完美获取sqlserver数据库的数据:

  • 相关阅读:
    同花顺股票交易接口的端口限速
    No module named ‘win32file‘
    Discord无法接受邀请的常见原因和解决方法
    【GPT引领前沿】GPT4技术与AI绘图
    1031 查验身份证 (分数 15)【C++】
    云原生系列之docker的容器管理实战
    等保测评各个级别的详细内容
    门控循环单元(GRU)【动手学深度学习v2】
    MVVM项目开发(商品管理系统三)
    【C语言】——三道基础程序练习
  • 原文地址:https://blog.csdn.net/weixin_43935474/article/details/125619293