硬件:台式组装机
系统: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代码如下:
- #ifndef MAINWINDOW_H
- #define MAINWINDOW_H
-
- #include <QMainWindow>
- #include <QSqlDatabase>
- #include <QSqlError>
- #include <QSqlQuery>
- #include <QDebug>
-
- QT_BEGIN_NAMESPACE
- namespace Ui { class MainWindow; }
- QT_END_NAMESPACE
- struct NodeInSql
- {
- int nNodeID;
- int nParentID;
- QString strNodeName;
- };
- class MainWindow : public QMainWindow
- {
- Q_OBJECT
-
- public:
- MainWindow(QWidget *parent = nullptr);
- void ConnectSql();
- ~MainWindow();
-
- private:
- Ui::MainWindow *ui;
- QList<NodeInSql> m_lstNodeInSql;
- };
- #endif // MAINWINDOW_H
mainwindow.cpp代码如下:
- #include "mainwindow.h"
- #include "ui_mainwindow.h"
-
- MainWindow::MainWindow(QWidget *parent)
- : QMainWindow(parent)
- , ui(new Ui::MainWindow)
- {
- ui->setupUi(this);
- ConnectSql();
- qDebug()<<"nNodeID nParentID strNodeName:";
- for(int i = 0;i<m_lstNodeInSql.count();i++)
- {
- qDebug()<<m_lstNodeInSql[i].nNodeID<<","<<m_lstNodeInSql[i].nParentID<<","<<m_lstNodeInSql[i].strNodeName;
- }
- }
-
- void MainWindow::ConnectSql()
- {
- QSqlDatabase db= QSqlDatabase::addDatabase("QODBC", "dbTemp");
- db.setDatabaseName(QString("DRIVER={SQL SERVER};"
- "SERVER=%1;" //服务器名称
- "DATABASE=%2;"//数据库名
- "UID=%3;" //登录名
- "PWD=%4;" //密码
- ).arg("127.0.0.1,1433")//默认的sqlserver的端口号是1433
- .arg("TestSql")
- .arg("sa")
- .arg("**********")//填写你的sa账号的密码!!!!!!!!!!!!
- );
- //数据库连接
- bool ok = db.open();
- if(ok)
- {
- qDebug()<<"database open success";
- }
- else
- {
- qDebug()<<db.lastError();
- return;
- }
- //数据库查询
- QSqlQuery query(db);
- query.exec("SELECT * FROM TableTopo;");
- while(query.next())
- {
- NodeInSql node;
- if(query.value(1).isValid())
- node.nNodeID = query.value(1).toInt();
- if(query.value(2).isValid())
- node.nParentID = query.value(2).toInt();
- if(query.value(3).isValid())
- node.strNodeName = query.value(3).toString();
- m_lstNodeInSql.append(node);
- }
- db.close();
- }
-
- MainWindow::~MainWindow()
- {
- delete ui;
- }
-
运行结果如下,完美获取sqlserver数据库的数据:
