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、保存并运行:
保存所有代码,单击左边绿色三角形编译运行
单击顺利运行弹出的窗体上的按钮,顺利查询出数据库记录!