MySQLとC#から返されたデータを処理する良い方法は何ですか?

StackOverflow https://stackoverflow.com/questions/1235792

  •  22-07-2019
  •  | 
  •  

質問

簡単な質問です。私が見つけたほとんどのブログとチュートリアルは、MySQLとC#の非常に基本的な要素に関するものです。

MySQL ADO Connectorを使用しています。

すべての設定が完了しており、テーブルからデータを取得できます。しかし、私は物事を単純化するメソッドを作成したいと思います。そのため、クエリ文字列(メソッドまたはオブジェクトのいずれか)を設定して関数を呼び出すと、何らかのデータオブジェクトが返されます。

// For each row
while(reader.Read())
{
    // For each column
    for(int i = 0; i < reader.FieldCount; i++)
    {
        Console.Write(reader.GetName(i).ToString());
        Console.Write(reader.GetValue(i).ToString() + ",");
    }
    Console.Write("\n");
}

これは私が今持っているものです。たぶん、読者を返すことができるでしょう。しかし、データをループするたびに、whileループでforループが必要になります。

入力して返すことができるより良いデータオブジェクトがあるかどうか疑問に思いますか?これに関する資料を読むためのリンクも大好きです。

ところで、私はC#を学んでいるので、100%明確でないことがあるかもしれません。

役に立ちましたか?

解決

データリーダーを渡さないでください。データリーダーから読み取りを行っている間はデータベース接続を開いたままにしておく必要があるため、データベース接続をできるだけ早く閉じることができるように、必要なデータを何らかのコレクションに読み込む必要があります。

データを DataSet または DataTable に読み込むか、オブジェクトのクラスを作成して直接入力できます。例:

List<SomeCustomObject> data = new List<SomeCustomObject>();
while(reader.Read()) {
   int id = reader.GetInt32(0);
   string name = reader.GetString(1);
   data.Add(new SomeCustomObject(id, name);
}

他のヒント

MySqlのADO.NETプロバイダーを使用して標準を返す理由 ADO.NET DataSet

これには、データを扱うコードを他のDBバックエンドに移植できるという利点があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top