2012-10-30 26 views
2

有人可以告訴我如何在類中創建一個方法,在調用時執行以下代碼?如何在類中創建一個方法來「連接到我的數據庫」調用?

OledbConnection con; 
private void createcon() 
{ 
    con = new OleDbConnection(); 

    string currentPath = Directory.GetCurrentDirectory(); 
    string DBPath = ""; 
    if (Directory.Exists(currentPath + @"\Database") == true) 
    { 
     DBPath = currentPath + @"\Database\SMAStaff.accdb"; 
    } 
    else 
    { 
     for (int i = 0; i < 2; i++) 
     { 
      currentPath = currentPath.Remove(currentPath.LastIndexOf("\\")); 
     } 
     DBPath = currentPath + "\\Database\\SMAStaff.accdb"; 
    } 
    con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + DBPath + ";" + 
    "Persist Security Info = False;Jet OLEDB:Database Password=123"; 
} 

這種方法出現在我的項目的每一種形式,所以我認爲創建一個類將是一個更好的主意。我能夠做到這一點,但 當我打電話

con.open() 

什麼也沒有發生,並在錯誤的窗口中顯示一個錯誤。名稱con在當前上下文中不存在。我知道這意味着什麼,但我不知道如何克服它。我試圖使「con」公開和內部但仍然注意到發生... 如果有人可以幫助我,將不勝感激... 謝謝

+1

文件路徑與字符串操作亂搞的,就可以考慮使用['系統.IO.Path'](http://msdn.microsoft.com/en-us/library/system.io.path.aspx)class;它有很多有用的方法爲你做。 – Bridge

回答

4

你可以改變返回類型的方法,並如果你把這個新的類必須更改私有到公有:

public OledbConnection createcon() 
{ 
    OledbConnection con = new OleDbConnection(); 

    string currentPath = Directory.GetCurrentDirectory(); 
    string DBPath = ""; 
    if (Directory.Exists(currentPath + @"\Database") == true) 
    { 
     DBPath = currentPath + @"\Database\SMAStaff.accdb"; 
    } 
    else 
    { 
     for (int i = 0; i < 2; i++) 
     { 
      currentPath = currentPath.Remove(currentPath.LastIndexOf("\\")); 
     } 
     DBPath = currentPath + "\\Database\\SMAStaff.accdb"; 
    } 
    con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + DBPath + ";" + 
    "Persist Security Info = False;Jet OLEDB:Database Password=123"; 


    return con; 

} 

所以你可以像這樣使用:除了classInstance.createcon().open();

+0

是的,它的工作原理,謝謝。 你能解釋爲什麼需要返回con嗎?我的意思是爲什麼我不能編寫classInstance.createcon()。con.open(); ??? 我知道它不起作用,但你能清除我的概念嗎? 此外,我們可以使用內部標識符,而不是公共權利? 您的幫助將被讚賞... @Saeid –

+0

@WaqasAli在此處閱讀AccessModifiers:http://msdn.microsoft.com/en-us/library/wxh6fsc7(v=vs.71).aspx – Saeid

+0

@WaqasAli And如果所有這些問題都像調用'con.open()'和定義'createcon()'方法在同一個類中(在相同的範圍內),那麼爲什麼你的方法不能在C#中使用變量作用域,那麼你的方法必須工作! – Saeid

相關問題