之前连接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表示打开成功