Хранение содержимого из базы данных в c # control - PullRequest
0 голосов
/ 13 августа 2010

У меня есть функция ViewComments (), которая извлекает содержимое из базы данных с помощью команд SQL

     private void ViewComments()
     {           
        hookUp = new SqlConnection("Server=XXXX\\SQLEXPRESS;Database=WebExcerciseDB;" + "Integrated Security=True");
        SqlCmd = new SqlCommand("SELECT PersonName,PersonMail,Comment FROM CommentsTable", hookUp);
        try
        {
            hookUp.Open();

            reader = SqlCmd.ExecuteReader();
            while (reader.Read())
            {
                SQL_Result.Text += reader["PersonName"] + "  " + reader["PersonMail"] + "  " + reader["Comment"] + Convert.ToString(reader["PostDate"]) + "<br/>";
            }
        }
        catch (Exception)
        {
            MessageBox.Show("Error in database code\n");

        }
        finally
        {
            reader.Close();
            hookUp.Close();
        }
    }

Я хочу сохранить содержимое в элементе управления IList<>, как это сделать?

спасибо в любом случае ..

Ответы [ 2 ]

3 голосов
/ 13 августа 2010

Создайте класс, у которого есть свойства для значений, которые вы хотите:

public class Comment
{
    public string PersonName {get;set;}
    public string PersonMail {get;set;}
    public string Comment {get;set;}
    public string PostDate {get;set;}
}

, а затем создайте список и заполните его значениями:

List<Comment> comments = new List<Comment>();

...

while (reader.Read())
{
    comments.Add(new Comment()
    { 
        PersonName = reader["PersonName"], 
        PersonMail = reader["PersonMail"], 
        Comment = reader["Comment"], 
        PostDate = Convert.ToString(reader["PostDate"]) 
    });
}
1 голос
/ 13 августа 2010

Вы также можете использовать LINQ to SQL для создания классов для вас.Это можно сделать следующим образом:

  1. В обозревателе решений Visual Studio щелкните правой кнопкой мыши проект и выберите Добавить -> Новый элемент
  2. В разделе Категории выберите Данные , а затем LINQ to SQL Classes .
  3. Затем в обозревателе серверов добавьте новое подключение к базе данных SQL.
  4. Перетащите нужные таблицы, просмотры и т. д. из обозревателя серверов в конструкторе реляционных объектов (страница редактирования) файла DBML.Виола!Visual Studio создала классы для вас.

Затем, чтобы выполнить запрос к вашей базе данных в коде, вы должны сделать что-то вроде:

    private void QueryMyData()
    {
        MyDbmlFileNameDataContext context = new MyDbmlFileNameDataContext("Server=XXXX\\SQLEXPRESS;Database=WebExcerciseDB;" + "Integrated Security=True");

        var query = from c in context.CommentsTable
                    where c.PersonName == "John Doe"        // This is optional if you want to sub-select.
                    select c;

        foreach (var comment in query)
        {
            Console.WriteLine(comment.PersonName + " " + comment.PersonMail + " " comment.Comment);
        }
    }

Вы можете увидеть больше примеров здесь или здесь .

ПРЕДУПРЕЖДЕНИЕ : По моему личному опыту, LINQ не очень эффективен при работе с очень большими наборами данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...