连接到本地 db 文件 (.mdf) 的连接字符串是啥
Posted
技术标签:
【中文标题】连接到本地 db 文件 (.mdf) 的连接字符串是啥【英文标题】:What is the connection string to connect to local db file (.mdf)连接到本地 db 文件 (.mdf) 的连接字符串是什么 【发布时间】:2018-05-06 08:28:28 【问题描述】:我在sqlserver实例SQLEXPRESS
中使用如下连接字符串连接数据库:
QString connStr = "DRIVER=SQL SERVER;SERVER=%1;DATABASE=%2;";
但我现在想连接到 SQL Server 数据库文件 (.mdf),并且我已经安装了 Microsoft SQL Server 2016 LocalDB。我应该使用什么连接字符串?
我尝试了以下连接字符串:
QString connStr = "DRIVER=SQL SERVER;SERVER=%1;AttachDbFileName=%2;"
db.setDatabaseName(connStr.arg("(LocalDB)\\v11.0",dbFilename));
我还尝试了不同的服务器:
db.setDatabaseName(connStr.arg("(LocalDB)\\MSSQLLocalDB",dbFilename));
但是它们都不起作用并抛出相同的错误:
"[Microsoft][ODBC SQL Server 驱动程序][DBNETLIB]SQL Server 没有 存在或访问被拒绝。 [微软][ODBC SQL 服务器 驱动程序][DBNETLIB]ConnectionOpen (Connect())。 QODBC3:无法 连接”
【问题讨论】:
签出connectionstrings.com 我已经查过了,Qt有不同风格的连接字符串。我尝试了不同的连接字符串,但没有一个对我有用。 任何帮助将不胜感激。如果问题不够清楚,请告诉我。 请告诉我们您用于本地数据库的实际连接字符串 @Squirrel - 我已经更新了问题。 【参考方案1】:经过一番研究,我找到了解决方案:
1- 确保已安装 Microsoft SQL Server 2016 LocalDB。
2- 将连接字符串中的“驱动程序”更改为:
DRIVER=ODBC Driver 13 for SQL Server
3- 确保属性 'AttachDbFileName' 指向正确的数据库文件路径,特别是您需要注意路径分隔符,而 QT 使用“/”,但在 Windows 中您必须使用“\”(“\\” )
要摆脱这个问题,请使用QDir::toNativeSeparators(dbFilename)
。
因此,在这些更改之后,连接字符串将如下所示:
QString connStr = "DRIVER=ODBC Driver 13 for SQL Server;SERVER=%1;AttachDbFilename=%2;Integrated Security=true;";
db.setDatabaseName(connStr.arg("(localdb)\\MSSQLLocalDB").arg(dbFilename));
谢谢。
【讨论】:
以上是关于连接到本地 db 文件 (.mdf) 的连接字符串是啥的主要内容,如果未能解决你的问题,请参考以下文章
带有本地 db .mdf 文件的 Web 应用程序如何发布到 Azure
使用 RobotFramework 连接到 H2 数据库文件