1

に完全に新しいC#

私のアプリでは、いくつかのボタンが接続しMySql、情報をやり取りします。各ボタンには独自の接続文字列がありますが、これは冗長であり、接続を確立してから呼び出すのではなく、接続文字列を保持して各ボタンで接続を呼び出す 方法が C# にClassorを作成する方法があるかどうかに興味がありました。Method

パラメータPublic Methodを使用して returnを作成しようとしましたが、他のボタンでは mycon がオブジェクトではなくメソッドとして表示されました。そこから、(dotnetperls および他のサイトの構文を使用して) を試しましたが、型に関する他のエラーが発生しました。明らかに、私はこれに慣れていないので、 a andを構築するために間違った構文に近づいていますが、 aはアクションになるため、実際にはオブジェクトを保持し、プログラムの他の部分ができるようにするクラスを探していますアクセスします。MySqlConnection myconmyconClassClassMethodMethod

例として、以下の疑似コードを参照してください。

現時点の

private void button1_Click(object sender, EventArgs e)
{

MySqlConnection mycon = new MySqlConnection();
mycon.ConnectionString = "Connection";

mycon.Open();
// Code
mycon.Close();

}

private void button2_Click(object sender, EventArgs e)
{

MySqlConnection mycon = new MySqlConnection();
mycon.ConnectionString = "Connection";

mycon.Open();
// Code
mycon.Close();

}

private void button3_Click(object sender, EventArgs e)
{

MySqlConnection mycon = new MySqlConnection();
con.ConnectionString = "Connection";

mycon.Open();
// Code
mycon.Close();

}

ゴール:

Some Class
{

//MySqlConnection parameters establish mycon

}

private void button1_Click(object sender, EventArgs e)
{

mycon.Open();
// Code
mycon.Close();

}

private void button2_Click(object sender, EventArgs e)
{

mycon.Open();
// Code
mycon.Close();

}

private void button3_Click(object sender, EventArgs e)
{

mycon.Open();
// Code
mycon.Close();

}

注:私はそのXMLアプローチを認識しています(そして、私のプログラムの別の1つでそれを使用しました)が、Class/Methodアプローチがあるかどうかを確認しようとしています.

4

4 に答える 4

3

接続を取得するためのすべての詳細を処理し、それを返すメソッド (おそらく静的で、コードのどこからでもアクセスできる場所に存在する可能性があります) を用意することをお勧めします。次に、接続が必要な場所で、そのメソッドを呼び出します。

class SomeClass
{
    private void button1_Click(object sender, EventArgs e)
    {
        using (var conn = Utilities.GetConnection())
        {
            conn.Open();
            // Code
        }
    }
}
public static class Utilities
{
    public static MySqlConnection GetConnection()
    {
        MySqlConnection conn = new MySqlConnection();
        conn.ConnectionString = "Connection";
        return conn;
    }
}

またusing、接続が常に閉じていることを確認するために使用します。通常は、使用するものでこれを行うことIDisposableをお勧めします。

含まれているかどうかに関する情報/議論についてOpen()、connection.open を使用したステートメントの使用をGetConnection()参照してください。

于 2013-06-05T15:18:15.757 に答える
1
class SomeClass : IDisposable
{
    SqlConnection conn;

    public SomeClass
    {
        conn = new SqlConnection("some connectionstring");
    }

    public void Open()
    {
        conn.Open()
    }

    public void Close()
    {
        conn.Close()
    }

    public void Dispose()
    {
        conn.Dispose()
    }
} 
于 2013-06-05T15:12:47.843 に答える
0

私はこのようなことをします:

public class DataBase
{
    private static string DEFAULT_CONNECTION_STRING = "*your connection string*";
    private string connectionString;
    private DbProviderFactory factory;

    public DataBase()
    {
            connectionString = DEFAULT_CONNECTION_STRING;
            factory = DbProviderFactories.GetFactory("MySql.Data.MySql");
    }

    public IDataReader GetData(string sql)
    {
            using(var conn = factory.CreateConnection())
            using(var command = factory.CreateCommand())
            {
                    command.CommandText = sql;
                    command.CommandType = CommandType.Text;
                    conn.ConnectionString = this.connectionString;
                    conn.Open();
                    command.Connection = conn;
                    return cmd.ExecuteReader();
            }
    }
}
于 2013-06-05T15:53:44.693 に答える