Каков хороший способ обработки возвращаемых данных из MySQL и C #? - PullRequest
0 голосов
/ 06 августа 2009

Просто краткие вопросы, так как большинство блогов и учебных пособий, которые я нашел, посвящены самым элементарным элементам 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");
}

Это то, что у меня сейчас. Я мог бы просто вернуть читателя. Но для этого потребуется цикл for в цикле while каждый раз, когда я хочу просмотреть некоторые данные.

Хотите знать, есть ли лучший объект данных, который я мог бы заполнить и вернуть? Я также хотел бы ссылки на материалы для чтения по этому вопросу.

Кстати, я изучаю C #, поэтому могут быть вещи, которые мне не понятны на 100%.

Ответы [ 2 ]

2 голосов
/ 06 августа 2009

Почему бы просто не использовать поставщика ADO.NET для MySql и вернуть стандартный ADO.NET DataSet ?

Преимущество заключается в том, что ваш код, связанный с данными, переносится на другие серверы БД.

1 голос
/ 06 августа 2009

Вы не должны передавать считыватель данных. Вы должны держать соединение с базой данных открытым до тех пор, пока вы читаете из устройства чтения данных, поэтому вы должны прочитать нужные данные в какую-то коллекцию, чтобы вы могли закрыть соединение с базой данных как можно раньше.

Вы можете читать данные в 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);
}
...