0

クラスを含むクラス ライブラリがあります。このクラスは、プログラムとデータベース間の接続を形成し、接続文字列を提供します。

public class DBcon
{
    private string pass = "";
    private string dbName = "";
    OleDbConnection con = new OleDbConnection();

    public string setdbName
    {
        set { dbName = value; }
    }

    public string setpass
    {
        set { pass = value; }
    }

    public OleDbConnection getsetcon
    {
        set { createcon(); }
        get { return con; }
    }

    private void createcon()
    {
        PathFinder dbPath = new PathFinder();    // just another class 

        string DBPath = "";

        dbPath.dbFilesPath = "db";
        dbPath.setDBName = dbName;
        DBPath = dbPath.dbFilesPath;

        con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + DBPath + ";" +
        "Persist Security Info = False;Jet OLEDB:Database Password=" + pass + "";
    }
}

まず、パブリックメソッドを使用したかったのです。すべてのプロパティを回避するために createcon を使用しますが、それは悪い習慣だと読みました。次に、書き込み専用プロパティを使用することにしましたが、それらも悪い習慣と見なされます。

私のクラスを適切に構造化されたクラスにするために何をすべきか誰か教えてください。文字列を返したくないので、書き込み専用プロパティを使用しています。OledbConnectionが欲しいだけです。

クラスの構造が変わったとしても、助けていただければ幸いです。

4

1 に答える 1

2
public class DBConnection
{
    private string pass = string.Empty;
    private string dbName = string.Empty;

    private OleDbConnection connection;

    public void DBConnection(string dbName, string pass)
    {
        this.dbName = dbName;
        this.pass = pass;

        this.Initialize();
    }

    public OleDbConnection Connection
    {
        get {return this.connection;}
    }

    private void Initialize()
    {
        //all the initialization
        var connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + DBPath + ";" +
        "Persist Security Info = False;Jet OLEDB:Database Password=" + pass + "";
        this.connection = new OleDbConnection(connString);
    }
}

ps 文字列連結を使用する代わりに、接続パスに適切な文字列ビルダーを使用します。

于 2013-06-08T10:10:35.333 に答える