qt mysql dsn_Qt与SQL server的连接使用

前言

因为数据库课设需要用到QT来写一个程序界面,并且连接SQL server数据库来提供数据查询等。以前没试过连接SQL server,记录一下如何一步步将在SQL server中创建的表连接到QT,让Qt能够访问数据库里面的数据。

全文分三个部分,一是SQL server先建立对应基本表,并插入一两条数据用于测试;二是设置ODBC源,这是在windows使用SQL server作为数据源需要设置的一个东西,后面再讲;三是Qt中对数据库的一个连接以及查询测试。

正文

一.SQL Server部分

1.建立数据库并创立对应表格

CREATE DATABASE Bank;

use Bank;

CREATE TABLE Card

( Account INT PRIMARY KEY,

Pwd VARCHAR(12) NOT NULL,

Balance INT CHECK(Balance>=0)

)

CREATE TABLE Record

( Account INT FOREIGN KEY(Account) REFERENCES Card(Account),

Rmoney INT,

Rtime DATETIME NOT NULL DEFAULT GETDATE()

)

INSERT INTO Card VALUES(123456,123456,100000);

INSERT INTO Record (Account,Rmoney) VALUES (123456,-100);2.对数据库添加sql server账户

打开安全性——登录名——右键新建登录名;在选择页——常规中,新建命为user_b的登录名,选择sqlserver身份验证方式,设置密码确认密码,不勾选强制实施密码策略;下一步选择用户映射。

06592b3facb2b7643697059fa2b4dbaf.png

在选择页——用户映射中,选择要使用的数据库勾选

ccfccae032501166c9c9033e7807a2d2.png

这里完成后,就可以用user_b来登录sqlserver和查看e_market database了,但要对数据库进行增查改删操作,再设置用户的权限。

先选择E_Market数据库,展开,选择安全性——用户——user_b——右键属性

63f4923398660d729ad9543c834c8d21.png

在选择页——成员身份中按下图设置,勾选db_datareader/da_datawriter/db_ddladmin/db_owner,确定。

0bbb6fc7e4a77cbd07a49425f1277eee.png

由此,可以通过user_b登录sqlserver,并访问数据库E_Market,进行增查改删的操作了。要是对其他数据库添加用户,可同理类推即可。

初始表格完成,再配置一下端口。

在配置数据源之前,要确保1433号端口已打开,1433端口,是SQL

Server默认的端口,SQL Server服务使用两个端口:TCP-1433、UDP-1434。其中1433用于供SQL

Server对外提供服务,1434用于向请求者返回SQL Server使用了哪个TCP/IP端口。

打开SQL Server 配置管理器,选择SQL Server网络配置,启用TCP/IP服务,并右键打开属性将,ip地址窗口中最下面IPAll的TCP端口设置为1433(大部分都默认这个端口)

二.ODBC部分

1.直接搜索打开ODBC,一般都有。运行打开如下窗口:

1ceb4e6ec733f1036e380ad217ea8ee9.png

再点击Add添加对应数据源,选择SQL Server

dd274521801fd3af67b7ff46a160a95b.png

确定后填写相关数据库信息

1dcedc767e0598887e3a1631b0502d92.png

Name是对数据源的命名,后面在QT中会用到。Description是对数据源的一些简单解释描述,Server是连接数据库中对应的服务器名,即SQL Server 登录框中的服务器名

fc840bed515c6b2e18a3f8c664b3c2c0.png

填完Name,Description, Server后下一步。

fe2fc709dc982736ef3bd8fc5f685cdd.png

再点击一下步选择需要连接的数据库作为默认数据库

选择下一步 ,测试数据源,成功后单击确定。

f78a4ed8542c7ec5257a864f6e5f1b6f.png

三.Qt连接测试部分

1.新建一个工程,选择widget application即可。

9fe9a94f6caf52e8eaa67ad2ead6ab18.png

创建工程成功后,先在.Pro文件中加入:QT += sql

Qt 提供了多种数据的驱动,可以在帮助文档搜索sql中找到

再在main.cpp中加入一些QT的SQL函数库并定义个连接函数进行连接测试。

Main.cpp的完整代码如下:

#include "mainwindow.h"

#include

#include

#include

#include

#include

#include

#include

#include

bool OpenDatabase()

{

QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); //数据库驱动类型为SQL Server

qDebug()<

QString dsn = QString::fromLocal8Bit("QTDSN"); //数据源名称

db.setHostName("localhost"); //选择本地主机,127.0.1.1

db.setDatabaseName(dsn); //设置数据源名称

db.setUserName("kid"); //登录用户

db.setPassword("kid"); //密码

if(!db.open()) //打开数据库

{

qDebug()<

QMessageBox::critical(0, QObject::tr("Database error"), db.lastError().text());

return false; //打开失败

}

else

{

qDebug()<

QSqlQuery query(db); //查询Card表并输出,测试能否正常操作数据库

query.exec("SELECT * FROM Card");

while(query.next())

{

qDebug()<

}

}return true;

}

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

{

QApplication a(argc, argv);

MainWindow w;

if(!OpenDatabase())

return 1;

w.show();

return a.exec();

}

再点击运行应该就成功连接到数据库了。

742c35133c1624c0761f8313382a15c6.png

输出了SQL Server数据库中Card表存放的测试数据,连接成功!

部分图片及代码来源于网络,感谢互联网及背后的程序员。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值