【问题标题】:How can I use variable in connection string?如何在连接字符串中使用变量?
【发布时间】:2017-07-27 03:26:05
【问题描述】:

我在连接字符串的变量方面遇到问题。在我的 app.config 数据库路径中似乎很好,但在表单上,​​我收到了该连接字符串的错误。当我尝试添加时:

_connectionString = "Data Source = (LocalDB)\\MSSQLLocalDB; " +
    "AttachDbFilename = \"|DataDirectory|\\gazi_db.mdf\"; " +
    "Integrated Security = True; Connect Timeout = 30";

数据库无法正常工作;它无法在退出时保存数据。然而这工作正常:

connectionString = "Data Source = (LocalDB)\\MSSQLLocalDB; " +
        "AttachDbFilename = \"C:\\Users\\Can\\Desktop\\c_sharp_gazi_installer" +
        "\\Gazi Installer\\gazi_installer\\gazi_db.mdf\"; " +
        "Integrated Security = True; Connect Timeout = 30";

我该如何解决这个问题?

编辑:我希望这会起作用

string DataDirectory = "";
string folder = Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().CodeBase);
AppDomain.CurrentDomain.SetData("DataDirectory", folder);

_connectionString = _connectionString = "Data Source = (LocalDB)\\MSSQLLocalDB; " +
        "AttachDbFilename = \"" + DataDirectory + "\\gazi_db.mdf\"; " +
        "Integrated Security = True; Connect Timeout = 30";

但它仍然给我 sqlclient sqlexception 错误。

EDIT2:此错误表示连接打开。我不明白为什么这也不起作用:

SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
builder["Data Source"] = "(LocalDB)\\MSSQLLocalDB";
builder["AttachDbFilename"] = @"C:\Users\Can\\Desktop\c_sharp_gazi_installer\Gazi Installer\gazi_installer\gazi_db.mdf";
builder["Integrated Security"] = true;
builder["Connect Timeout"] = 30;

请人帮忙。我要疯了。

【问题讨论】:

  • “我遇到了错误”。如果有办法让我们知道错误消息是什么。
  • 如果使用sqlserver管理工具创建数据库,而不是从VS创建数据库,或者先附加mdf文件,就不会出现这种问题了。
  • 哦,这就是我正在努力解决的问题。我做不到。
  • 我记得它给了我 sqlexception 错误

标签: c# vb.net .net-3.5


【解决方案1】:

首先,您可以使用@“符号”来避免使用太多转义字符。 那么,“DataDirectory”变量是在哪里定义的呢?

【讨论】:

【解决方案2】:

.NET 有一个 connection string builder 类。使用它,您可以将每个值(即数据源、集成安全性)分别设置为变量,然后使用.ConnectionString 属性获取连接字符串。

【讨论】:

猜你喜欢
  • 2011-05-10
  • 2023-04-06
  • 1970-01-01
  • 2013-02-13
  • 2013-11-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多