Qt连接SQL-Server

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

首先创建一个数据库:

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

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述

main()函数中代码如下:

#include "widget.h"
#include <QApplication>
#include <QSqlDatabase>
#include <QStringList>
#include <QDebug>//以下是手工添加的引用
#include <QSqlDatabase>
#include <QSqlError>
#include <QMessageBox>

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 <QSqlQueryModel>

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);
    }
}

相关控件:

在这里插入图片描述
在这里插入图片描述

执行结果如下:

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

在窗口中点击显示按钮:

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值