Qt连接SQL-Server

之前连接Mysql时花了两天都没弄好,后来期末做C#项目老师要求用sql -server做,抱着尝试的心理上网搜了一下Qt连接sql的操作,居然一次就成功了,在这里分享一下。

首先创建一个数据库:

注意要记得数据库的登录名和密码:
我在这里创建了一个test数据库以及一个StudentInformation的表

Qt连接SQL-Server_第1张图片
Qt连接SQL-Server_第2张图片

接下来到Qt中来操作 首先在.pro中添加QT+=sql

在这里插入图片描述

main()函数中代码如下:

#include "widget.h"
#include 
#include 
#include 
#include //以下是手工添加的引用
#include 
#include 
#include 

void OpenDatabase()
{         QSqlDatabase db=QSqlDatabase::addDatabase("QODBC");
          db.setDatabaseName(QString("DRIVER={SQL SERVER};"
                                     "SERVER=%1;" //服务器名称
                                     "DATABASE=%2;"//数据库名
                                     "UID=%3;"       //登录名
                                     "PWD=%4;"        //密码
                                     )
                             .arg("DESKTOP") //输入服务器名称
                             .arg("test")   //输入数据库名称
                             .arg("sa")   //输入登录名
                             .arg("  ")//输入登录密码
                             );
                if (!db.open())  //打开错误条件下
                {
                    QMessageBox::critical(0, qApp->tr("Cannot open database"),
                                          db.lastError().databaseText(),
                                          QMessageBox::Cancel);
                }
                else  //如果打开成功输出success
                {
                    qDebug()<<"success";
                }
}
int main(int argc, char* argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    //打开数据库
    OpenDatabase();
    return a.exec();
}


cpp源码:

#include "widget.h"
#include "ui_widget.h"
#include 

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
}

Widget::~Widget()
{
    delete ui;
}


void Widget::on_pushButton_clicked()
{
    QSqlQueryModel *model = new QSqlQueryModel;
    model->setQuery("select * from StudentInformation");//这里直接设置SQL语句,忽略最后一个参数 StudentInformation为要操作的表名
    ui->tableView->setModel(model);
    //以下是视觉方面的效果,不加也没影响
    //隔行变色
    ui->tableView->setAlternatingRowColors(true);
    //设置行高
    int row_count = model->rowCount();
    for(int i =0; i < row_count; i++)
    {
        ui->tableView->setRowHeight(i, 20);
    }
}

相关控件:

Qt连接SQL-Server_第3张图片
Qt连接SQL-Server_第4张图片

执行结果如下:

在这里插入图片描述
输出success表示打开成功

在窗口中点击显示按钮:

Qt连接SQL-Server_第5张图片

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