需求准备
1、两台能够联网的电脑,且两台电脑处于同一局域网下;
2、SQL server 2012 (因为工作电脑是用的Win7系统,而最新的SQL server 2022已经不支持Win7系统,因此这里选择的2012版本);
3、Navicat Premium12.0(用于测试)。
电脑A(服务端)
1、安装SQL server 2012,这里参考了一位博主的博客,上链接:https://blog.csdn.net/xunxue1523/article/details/118195302?spm=1001.2014.3001.5506
笔者是按照这篇文章教科书式安装的,文章讲解的很详细,按照上面的方法安装没啥问题。
2、开始菜单打开MSSM,新建一个数据库:
数据库名字自定义,其他的默认就行。这个数据库只是用于测试。
右键新建的数据库,右键表,新建表,然后输入列名,数据类型。
想要往表中加数据,右键新增的表,点击“编辑前200行”即可。
3、安装Navicat Premium12.0,百度名字即可下载。用其他的第三方数据库管理器亦可。
新建连接,名字自定义:
注意:主机输入本地的IP地址,或者主机名都可。因为端口是默认的1433,因此可以不用输入端口号。
连接成功查询之前新建的表,如下图所示:
至此本机能够访问本地的SQL server 2012数据库。
当然这里笔者并不是一次性成功的,遇到的问题参考了如下这篇博客:
https://blog.csdn.net/Mr_Blackk/article/details/120907783
而对于远程连接访问,则参考了另一篇博客:
https://blog.csdn.net/cao919/article/details/102655970
因为这些方法都不是笔者自己摸索出来的,但确实通过他们的方法达成了目的,因此这里搬运上他们的链接供大家参考。
电脑B(客户端)
按照电脑A的第三部,安装第三方数据库查看软件。(电脑B无需安装SQL server 2012)
这里有个坑点,就是在输入IP地址的时候,如果是默认端口1433,直接输IP地址即可。若服务器改变了默认端口号,则输入:192.168.1.3,XXXX。注意是“,”而不是“:”。
用Qt访问局域网内另一台电脑的SQL server数据库:
直接上代码:
void MainWindow::initdata()
{
if(QSqlDatabase::contains("qt_sql_default_connection"))
db = QSqlDatabase::database("qt_sql_default_connection");
else
db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName(QString("DRIVER={SQL SERVER};SERVER=%1;DATABASE=%2;UID=%3;"
"PWD=%4;").arg("192.168.1.3,1433").arg("Chung").arg("sa").arg("b318813"));
//1、IP以及端口号 2、数据库名 3、用户名 4、密码
bool ok =db.open();
if(ok)
{
qDebug()<<"连接数据库成功!";
QSqlQuery query;
query.exec(QString("select Lisname from Listable"));
query.next();
qDebug()<<query.value(0).toString();
}
else
{
qDebug()<<"连接数据库失败!";
}
}:
输出结果: