2012-10-16 69 views
3

我想通過讓我的程序連接到服務器來在c#中創建一個SQL數據庫。我在創建登錄屏幕時遇到問題。問題是爲了創建一個登錄屏幕。我想傳遞2個字符串到連接類,我無法這樣做,因爲該語句是靜態的?將c#中的字符串傳遞給靜態語句

public class sqlconnect 
{ 
    public String us; 
    public String pas; 

    public SqlConnection myConnection = new SqlConnection("user id=" + (us) + ";" + 
              "password=" + (pas) + ";server=PANDORA;" + 
              "Trusted_Connection=yes;" + 
              "database=NHS; " + 
              "connection timeout=30"); 
} 

ERROR - A field initializer cannot reference the non-static field, method, or property 

如果我試圖讓「我們」或「PAS」靜,我無法從我的主類信息傳遞到這一個。如果有人能指出我做錯了什麼,我將不勝感激,因爲我不是C#的專家,我必須承認。謝謝。

+0

您需要在分配用戶名/密碼(很可能這是您打算執行的操作)後在方法中運行該代碼。編輯:船載的其他問題(用戶名/密碼爲明文,輸入驗證,公共領域),但這是問題之外。 –

回答

1
// property 
public SqlConnection myConnection { get; set; } 

// method 
public SqlConnection GetSqlConnection() 
{ 
    if (myConnection == null) 
     myConnection = new SqlConnection("user id=" + us + ";" + 
             "password=" + pas + ";server=PANDORA;" + 
             "Trusted_Connection=yes;" + 
             "database=NHS; " + 
             "connection timeout=30"); 

    return myConnection; 
} 
8

您不能在字段初始值設定項內使用變量。這裏一個很好的選擇將是使myConnection屬性或(更重要的是,在這種情況下)的方法:

public SqlConnection CreateConnection() 
{ 
    return new SqlConnection("user id=" + us + ";" + 
             "password=" + pas + ";server=PANDORA;" + 
             "Trusted_Connection=yes;" + 
             "database=NHS; " + 
             "connection timeout=30"); 
} 

這可以讓你以創造你想要的值使用其他變量(狀態)。

我還建議將您的字符串值更改爲屬性,有一個構造函數來初始化它們的屬性,並使用更好的名稱。另一種方法是擁有用戶名和密碼是參數的方法,即:

public SqlConnection CreateConnection(string username, string password) 
{ 
    return new SqlConnection("user id=" + username + ";" + 
             "password=" + password + ";server=PANDORA;" + 
             "Trusted_Connection=yes;" + 
             "database=NHS; " + 
             "connection timeout=30"); 
} 

這elimniate需要你的類中存儲這些爲國家(除非他們使用其他程序,以及)。

+0

是的,我只是注意到了,對不起! –

+1

@ChrisSinclair只是編輯,以包括該建議,但;)我認爲它是另一個不錯的選擇。 –

+0

我的確在想這樣的事情,但是我怎麼才能開始從主類開放連接呢?因爲我的主類調用方法,但它無法打開連接? – Marshal

相關問題