QT 连接 sql server数据库 完整演示

1、测试qt是否支持sql sqlserver

在配置文件中先添加 一行 QT+=sql

#include <QApplication>  

#include <QSqlDatabase>  

#include <QStringList>  

#include <QDebug>  

int main(int argc, char* argv[])     

{    

     QApplication app(argc, argv);    

     qDebug() << "Available drivers:";    

     QStringList drivers = QSqlDatabase::drivers();    

     foreach(QString driver, drivers)  //列出Qt5所有支持的数据库类型

          qDebug() << "\t" << driver;    

     QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");    

     qDebug() << "ODBC driver valid?" << db.isValid();  //true为支持

}   


 输出结果如下:

"QSQLITE""QMYSQL""QMYSQL3""QODBC""QODBC3""QPSQL""QPSQL7"ODBC driver valid? true


如果提示:

QODBC driver not loaded

1、在目录C:\Qt\5.5\plugins\sqldrivers下找到ODBC的4个驱动文件;
2、在个人QT工程的目标程序目录下建立文件夹sqldrivers,并将这4个驱动文件放进去。(本人所存放路径D:\DEMO\demo-build-desktop\debug\sqldrivers\,供大家参考,注意:文件夹名字一定要是sqldrivers)

3、做完以上步骤后,再运行你的程序,就可以顺利利用ODBC访问数据库啦


接下来演示一个连接sql server 的例子

本文示例成功运行的前提是电脑上已经运行了SQL Server并且有数据库及数据表。 

1、新建工程: 

打开Qt Creator,File -> New File or Project,左边选择 Qt Widget Project,右边选择Qt Gui Application

单击Choose;填写工程名称(这里是1)及选择目录

-> Next -> Next -> Next -> Finish,工程顺利生成并自动回到了主界面,单击一下左边的绿色小三角,就会编译运行这个空白的程序。 

2、连接数据库: 

要连接数据库,就要手工向工程里面的相关文件添加代码,具体如下:

1.pro:添加一行 QT += sql

main.cpp:添加引用 

    #include <QtGui/QApplication> 
    #include "mainwindow.h" 
     
    //以下是手工添加的引用 
    #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("192.168.1.252") 
                           .arg("数据库名") 
                           .arg("登录名") 
                           .arg("密码") 
                           ); 
        if (!db.open()) 
        { 
            QMessageBox::critical(0, qApp->tr("Cannot open database"), 
                                  db.lastError().databaseText(), QMessageBox::Cancel); 
     
        } 
    } 
     
    int main(int argc, char *argv[]) 
    { 
        QApplication a(argc, argv); 
        MainWindow w; 
        w.show(); 
         
        //打开数据库 
        OpenDatabase(); 
         
        return a.exec(); 
    } 


双击 mainwindow.ui 拖一个TableView和一个PushButton到界面上,然后在PushButton上右键 -> Go to slot -> OK 

 

mainwindow.cpp文件代码如下

    #include "mainwindow.h" 
    #include "ui_mainwindow.h" 
     
    //手工添加以下引用 
    #include <QSqlQueryModel> 
     
    MainWindow::MainWindow(QWidget *parent) : 
        QMainWindow(parent), 
        ui(new Ui::MainWindow) 
    { 
        ui->setupUi(this); 
    } 
     
    MainWindow::~MainWindow() 
    { 
        delete ui; 
    } 
     
    void MainWindow::on_pushButton_clicked() 
    { 
        QSqlQueryModel *model = new QSqlQueryModel; 
        model->setQuery("select * from product");//这里直接设置SQL语句,忽略最后一个参数 
        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); 
        } 
    } 


3、保存并运行: 

保存所有代码,单击左边绿色三角形编译运行 

单击顺利运行弹出的窗体上的按钮,顺利查询出数据库记录!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值