首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >连接到本地数据库文件(.mdf)的连接字符串是什么

连接到本地数据库文件(.mdf)的连接字符串是什么
EN

Stack Overflow用户
提问于 2018-05-06 16:28:29
回答 1查看 1K关注 0票数 0

我使用以下连接字符串连接到sqlserver实例SQLEXPRESS中的数据库

代码语言:javascript
复制
QString connStr = "DRIVER={SQL SERVER};SERVER=%1;DATABASE=%2;";

但我现在要连接到SQL Server数据库文件(.mdf),并且我已经安装了Microsoft SQL Server 2016 LocalDB。我应该使用什么连接字符串?

我尝试了以下连接字符串:

代码语言:javascript
复制
QString connStr = "DRIVER={SQL SERVER};SERVER=%1;AttachDbFileName=%2;"
db.setDatabaseName(connStr.arg("(LocalDB)\\v11.0",dbFilename));

我还尝试了不同的服务器:

代码语言:javascript
复制
db.setDatabaseName(connStr.arg("(LocalDB)\\MSSQLLocalDB",dbFilename));

但它们都不能正常工作并抛出相同的错误:

"MicrosoftDBNETLIBSQL服务器不存在或访问被拒绝。MicrosoftDBNETLIBConnectionOpen (Connect()). QODBC3:无法连接“

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-01 23:55:10

经过一些研究,我找到了解决方案:

1-确保已安装Microsoft SQL Server 2016 LocalDB。

2-将连接字符串中的“Driver”更改为:

代码语言:javascript
复制
DRIVER={ODBC Driver 13 for SQL Server}

3-确保属性'AttachDbFileName‘指向正确的数据库文件路径,特别是你需要注意路径分隔符,而QT使用"/“,但在Windows中你必须使用"\”("\") <-- (这是我的主要问题)。

要解决此问题,请使用QDir::toNativeSeparators(dbFilename)

因此,在这些更改之后,连接字符串将如下所示:

代码语言:javascript
复制
QString connStr = "DRIVER={ODBC Driver 13 for SQL Server};SERVER=%1;AttachDbFilename=%2;Integrated Security=true;";
db.setDatabaseName(connStr.arg("(localdb)\\MSSQLLocalDB").arg(dbFilename));

谢谢。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50197722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档