2013-05-01 12 views
1

我有Formselectserver其中從組合框中獲取SQL Server的名稱。我也有form2哪裏是主要的形式。在連接字符串中設置SQL Server名稱不起作用

我發送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'

回答

5

有兩件事是錯誤:

  • const值在編譯期間需要解析,而不是在運行時。您正在使用運行時值。只需刪除const
  • 你的領域是一個私人領域,所以它是你的課程的一員。你的objfrmserver也是同一班的成員嗎?你不能初始化相同類中的字段。將初始化移動到構造函數。

試試這個:

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

錯誤沒有解決和錯誤bacome更多 – anfd 2013-05-01 14:51:16

+0

我用一個例子更新了我的答案。 – 2013-05-01 14:53:51

+0

如何使用SqlConnection objconnection = new SqlConnection(strconnection); – anfd 2013-05-01 15:02:20

4

一個const是一個編譯時間常數,所以只能涉及到在編譯時已知的東西 - 基本上,文字。

objfrmserver是一個實例(per-object)字段,它是在運行時對另一個對象的引用。這不起作用。所以基本上,你的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,以避免不必知道與服務器名稱相關聯的轉義規則。