簡體   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