繁体   English   中英

在连接字符串中设置SQL Server名称不起作用

[英]Set SQL Server name in connection string not working

我有Formselectserver ,从组合框中获取SQL Server的名称。 我也有form2在哪里是主要形式。

我将combobox.selectedvalue发送到form2中的连接字符串,但这不起作用。

我希望用户在网络中选择一个SQL Server并连接到它。

Formselectserver objfrmserver = new Formselectserver();

private const string strconnection = 
    @"server='" + objfrmserver.cmbshowallsqlserver.SelectedValue + 
    "';database = anfd; Integrated Security = SSPI";

错误是:

非静态字段,方法或属性'exportdatafromholoo.Form1.objfrmserver'需要对象引用

有两件事是错误的:

  • 常量值必须在编译时而不是在运行时解析。 您正在使用运行时值。 只需删除const
  • 您的字段是私有字段,因此它是您班级的成员。 您的objfrmserver还是该类的成员吗? 您不能互相初始化同一类中的字段。 将初始化移到构造函数。

尝试这个:

public void MyMethod()
{
    Formselectserver objfrmserver = new Formselectserver();
    string strconnection = @"server='" + objfrmserver.cmbshowallsqlserver.SelectedValue + "';database = anfd; Integrated Security = SSPI";
}

const是一个编译时常量,因此只能包含在编译时已知的内容-基本上是文字。

objfrmserver是实例(按对象)字段,在运行时是对另一个对象的引用。 这是行不通的。 因此,基本上,您的strconnection不能是const 我怀疑这是一个领域也没有太多目的。 但作为变量可能是有道理的,即

public void Connect() {
      var strconnection = @"server='" + objfrmserver.cmbshowallsqlserver.SelectedValue + "';database = anfd; Integrated Security = SS=PI";
      var conn = new SqlConnection(strconnection);
      conn.Open();
      // etc...
}

您可能还希望查看SqlConnectionStringBuilder ,以避免必须知道与服务器名称关联的转义规则。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM