steps1:打开SQL配置管理器,查看SQL的TCP/IP是否启用,查看SQL的TCP/IP是否启用,查看IPALL的端口是否为1433;
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