【问题标题】: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:无法 连接”

【问题讨论】:

  • 我已经查过了,Qt有不同风格的连接字符串。我尝试了不同的连接字符串,但没有一个对我有用。
  • 任何帮助将不胜感激。如果问题不够清楚,请告诉我。
  • 请告诉我们您用于本地数据库的实际连接字符串
  • @Squirrel - 我已经更新了问题。

标签: sql-server qt5


【解决方案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));

谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多