我使用以下连接字符串连接到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));
但它们都不能正常工作并抛出相同的错误:
"MicrosoftDBNETLIBSQL服务器不存在或访问被拒绝。MicrosoftDBNETLIBConnectionOpen (Connect()). QODBC3:无法连接“
发布于 2018-06-01 23:55:10
经过一些研究,我找到了解决方案:
1-确保已安装Microsoft SQL Server 2016 LocalDB。
2-将连接字符串中的“Driver”更改为:
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));
谢谢。
https://stackoverflow.com/questions/50197722
复制相似问题