QT VS实现连接SQLServer

前言:

转载请附上连接,本帖原创请勿照抄。

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

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

双子座断点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值