前言:
转载请附上连接,本帖原创请勿照抄。
QT支持的数据库:这里因为连接的是SQLServer所以使用ODBC的方式来连接数据库
1、数据库和表的新建
大家可以直接新建表可以参考也可以按照自己的来,我把P_PagID设为了主键自增。
2、配置ODBC数据源
控制面板->管理工具->数据源配置(最好32位和64位都添加)->添加
最后测试一下点击完成
大家具体可以参考这篇博客:https://blog.csdn.net/cuiyaoqiang/article/details/50708851
3、代码实现
.h文件
#pragma once
#include <QtWidgets/QMainWindow>
#include "ui_QT_Demo.h"
#include<QPushButton>
#include<QToolButton>
#include <QHeaderView>
//QtSql/
#include<QSqlError>
#include<QSqlDatabase>
#include<QSqlQuery>
class QT_Demo : public QMainWindow
{
Q_OBJECT
public :
QT_Demo(QWidget *parent = Q_NULLPTR);
QSqlDatabase db;
//QPushButton *QT_BUTTON;
private :
Ui::QT_DemoClass *ui;
private slots:
void on_QT_BUTTON_clicked();
bool OpenDatabase();
void ViewShow();
};
.CPP文件
#include "QT_Demo.h"
#include <QMessageBox>
#include <QApplication>
#include<QSql>
#include <QDialog>
#include <QDebug>
#include <QMessageBox>
#include <QStandardItemModel>
QT_Demo::QT_Demo(QWidget *parent)
: QMainWindow(parent)
{
ui->setupUi(this);
/*设置按钮名称*/
//ui->QT_BUTTON->setText("aa");
/* 设置表格视图大小 */
ui->QT_TABLEVIEW->resize(400, 200);
/* 创建数据模型 */
QStandardItemModel* model = new QStandardItemModel();
/* 设置表格标题行(输入数据为QStringList类型) */
model->setHorizontalHeaderLabels({ "ID", "UserName", "PassWord", "Language"});
/* 自适应所有列,让它布满空间 */
ui->QT_TABLEVIEW->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
/* 设置表格视图数据 */
ui->QT_TABLEVIEW->setModel(model);
/* 显示 */
ui->QT_TABLEVIEW->show();
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); //数据库驱动类型为SQL Server
if (!db.isValid())
{
QMessageBox::about(NULL, "Error", "ODBCError!");
}
QString dsn = QString::fromLocal8Bit("QT_Paging"); //数据源名称
db.setHostName("localhost"); //选择本地主机,127.0.1.1
db.setDatabaseName(dsn); //设置数据源名称
db.setUserName("sa"); //登录用户
db.setPassword("XXXXXX"); //密码
if (!db.open()) //打开数据库
{
qDebug() << db.lastError().text();
QMessageBox::critical(0, QObject::tr("Database error"), db.lastError().text());
return ; //打开失败
}
else
{
//"database open success!";
QSqlQuery query(db);
query.exec("insert into Paging (P_UserName,P_PWD,P_Language) values ('dd',4001,'Java')");
QSqlQuery querys(db); //查询Card表并输出,测试能否正常操作数据库
querys.exec("SELECT * FROM Paging");
while (querys.next())
{
qDebug() << querys.value(0).toInt() << querys.value(1).toString() << querys.value(2).toInt() << querys.value(3).toString();
}
return;
}
}
void QT_Demo::on_QT_BUTTON_clicked()
{
//QMessageBox::about(NULL, "About", "a");
OpenDatabase();
}
bool QT_Demo::OpenDatabase()
{
//查询Card表并输出,测试能否正常操作数据库
/* 创建数据模型 */
QStandardItemModel* model = new QStandardItemModel();
/* 设置表格标题行(输入数据为QStringList类型) */
model->setHorizontalHeaderLabels({ "ID", "UserName", "PassWord", "Language" });
/* 加载共10行数据,并每行有4列数据 */
for (int i = 0; i < 10; i++) {
/* 加载第一列(ID)数据 */
model->setItem(i, 0, new QStandardItem(QString("100%1").arg(i)));
/* 加载第二列(User Name)数据 */
model->setItem(i, 1, new QStandardItem(QString("User%1").arg(i)));
/* 加载第三列(City)数据 */
model->setItem(i, 2, new QStandardItem("Shanghai"));
/* 加载第四列(Classify)数据 */
model->setItem(i, 3, new QStandardItem("Engineer"));
}
/* 自适应所有列,让它布满空间 */
ui->QT_TABLEVIEW->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
ui->QT_TABLEVIEW->setModel(model);
return true;
}
void QT_Demo::ViewShow() {
return;
}
VS输出界面:
4、其他说明
4.1 在VS中没有PRO文件怎么办:
4.2 VS里面QT += sql加在Pro文件里面不管用怎么办
将SQL勾选上就可以正常使用了
结语:唉~还是有点懒,试试能不能每天写一篇博客~
往期博客深入介绍TCP\IP那么多人都收藏了!确定不看看再走??? https://blog.csdn.net/qq_37529913/article/details/106765916