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。我知道这意味着什么,但我不知道如何克服它。我试图让“骗局”公开和内部但仍然注意到发生...如果有人可以帮助我将不胜感激...谢谢

4

1 回答 1

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();

于 2012-10-30T08:46:08.493 回答