Qt链接SQL

steps1:打开SQL配置管理器,查看SQL的TCP/IP是否启用,查看SQL的TCP/IP是否启用,查看IPALL的端口是否为1433;

打开SQL配置管理器

steps2:设置服务器属性。右键服务器 打开服务器属性;安全性——>选择SQL和Windows身份验证模式;登录审核随意;

steps3:建立数据库(create database  Test)。新建登录名(用户名和密码一定要记得),取消强制实施密码策略;用户映射——>勾选刚刚建立的数据库;数据库成员身份的选择如下;服务器的角色这里我只勾选超级管理员(其他的要不要选我也不太清楚);

steps4:!!!炒鸡炒鸡重要,重启服务器;

steps5:打开ODBC Data Source(你可以用Windows自带的搜索器搜索ODBC,推荐一波Listary; 添加数据源,选择SQL驱动;

 

steps6:命名数据源(这个名称后面QT需要用;之后狂戳下一步(别忘了输入登录名和密码;

steps7:测试数据源;测试成功后就可以愉快的秃头了; 

 

测试代码:使用VS写QT时别忘了勾选SQL

#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
#include <QDebug>

qDebug() << "Available drivers:";
QStringList drivers = QSqlDatabase::drivers();
foreach(QString driver, drivers)  //列出Qt5所有支持的数据库类型
    qDebug() << "\t" << driver;

QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
QString dsn = QString::fromLocal8Bit("QTtest2");      //数据源名称  
//db.setHostName("127.0.1.1");                        //选择本地主机,127.0.1.1   
db.setDatabaseName(dsn);                            //设置数据源名称  
db.setUserName("HHP");                               //登录用户  
db.setPassword("123456");                           //密码  
if(!db.open())                                      //打开数据库  
{        
    qDebug()<<db.lastError().text();    
    return -1;                                   //打开失败   
}    
else
{
    qDebug() << "database open success!";
}



下面是用QT执行SQL语句的方法;

bool doSQLcomd(QString &qstrComd)
{
    QSqlQuery query(db);
    query.prepare(qstrComd);
    if (!query.exec())
    {
        query.clear();
	return false;
    }
	query.clear();
	return true;
}

下面是用SQL获取返回数据的方法;

bool getSQLdata(int nsize, vector<QStringList>&VecQStrList, QString &qstrComd)//nsize是返回数据的格式,例如:select Sno,Sname from Student ;nsize=2;
{
    QStringList qlist;
    QSqlQuery query(db);
    query.prepare(qstrComd);
    if (!query.exec())
    {
	return false;
    }
    while (query.next())
    {
	for (int i = 0; i < nsize; i++)
	{
	    qlist.append(query.value(i).toString().trimmed());//.trimmed()去除两侧空白
	}
		
	VecQStrList.push_back(qlist);
	qlist.clear();
    }
	query.clear();
	return true;
}

最后 推荐两个更简单的模型,QSqlQueryModel,QSqlTableModel;

具体使用参考https://blog.csdn.net/iloveqt5/article/details/16113813

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值