1

我可以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”需要对象引用

4

2 回答 2

5

有两点不对:

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

尝试这个:

public void MyMethod()
{
    Formselectserver objfrmserver = new Formselectserver();
    string strconnection = @"server='" + objfrmserver.cmbshowallsqlserver.SelectedValue + "';database = anfd; Integrated Security = SSPI";
}
于 2013-05-01T14:36:38.217 回答
4

Aconst是一个编译时常量,所以只能涉及编译时已知的东西——基本上是文字。

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,以避免必须知道与服务器名称相关的转义规则。

于 2013-05-01T14:37:26.313 回答