-1

mysqldatabaseからデータを取得し、C#アプリケーションに変数を投入しています。私はこのコードを使用しています:

int forcatime;
string comandomedia = "select avg(forca_jogador) from jogadores where nome_time = " + time;

ocon.ConnectionString = con;
MySqlCommand media = new MySqlCommand(comandomedia, ocon);
ocon.Open();
forcatime = Convert.ToInt32(media.ExecuteScalar());
ocon.Close();

これを行った後、「forcatime」ToStringを変換し、MessageBoxにスローします。

この操作のクラスを作成する方法があるかどうかを知りたいのですが、それを実行する必要があるたびに、すべてのコードを何度も作成するからです。ありがとう

4

3 に答える 3

1

何かのようなもの...

int result = new DataLayerHelper().RunQuery();
MessageBox.Show(result.ToString());

[...]

public class DataLayerHelper
{
    public DataLayerHelper() { }

    public int RunQuery()
    {
        int forcatime;
        string comandomedia = "select avg(forca_jogador) from jogadores where nome_time = " + time;
        ocon.ConnectionString = con;
        MySqlCommand media = new MySqlCommand(comandomedia, ocon);
        ocon.Open();//consider a using statement
        forcatime = Convert.ToInt32(media.ExecuteScalar());
        ocon.Close();

        return forcatime;
    }
}
于 2013-02-11T14:24:15.863 に答える
0

このためのクラスを作成するのではなく、このための関数を作成します。

public void Foo(params)  
{
    //your code here
}  

あなたがすることは、プライベートコンストラクターを持つ静的関数で構成される「ユーティリティ」クラスにこれを配置することです。

例:

public class DBUtilities  
{  
       private DBUtilities(){}  
       public static void Foo(params)  
       {  
        int forcatime;
    string comandomedia = "select avg(forca_jogador) from jogadores where nome_time = " + time;
    ocon.ConnectionString = con;
    MySqlCommand media = new MySqlCommand(comandomedia, ocon);
    ocon.Open();
    forcatime = Convert.ToInt32(media.ExecuteScalar());
    ocon.Close();
       }  
}  
于 2013-02-11T14:24:29.440 に答える
0

クラスは、カプセル化するロジックを念頭に置いて作成する必要があります。

これが何をしているのか、なぜ画面に投げているのかを言う必要があります...など

さらに、時間がどこから来ているかによって、コードに SQL インジェクションが発生する可能性があります。

PS ここにいる何人かの人々が意味をなさない場合は申し訳ありませんので、私は速く入力することはできません.

于 2013-02-11T14:26:10.170 に答える