Извлечение данных из SQL в класс - PullRequest
0 голосов
/ 23 ноября 2011

Допустим, моя база данных SQL содержит таблицу с именем 'Customer'.У этого Клиента есть идентификатор, имя, фамилия и изображение (byte[]).

То, что я хотел бы, это тип (класс) на клиенте, который имеет int, два strings и byte[].Каждая запись будет затем прочитана в каждую из них.

Я немного знаю C #, но я немного новичок, когда дело доходит до доступа с C #, хотя я смог опуститьзаписи с удаленного сервера.Я просто хотел бы отсортировать их, как только они появятся на стороне клиента.

Редактировать : Хорошо, похоже, я немного расплывчатся в симпатиях людей, поэтому позвольте мне уточнить.Я знаю, как создать класс, и я изучил детали переноса данных из базы данных SQL в проект C # с помощью команд ADO.NET.

Я хочу знать, как отражать информациюв таблице SQL как объект в моем проекте C #.Так, например, я загружаю одну запись из своей таблицы, она переходит в объект.

Ранее я использовал Silverlight, у которого есть модель EDMX и класс обслуживания домена.Если кто-то знаком с этим поведением, это в основном то, что я пытаюсь подражать.Я бы использовал это, но одно из ограничений, с которыми я сталкиваюсь, заключается в том, что я ограничен использованием только стороны приложения, а не веб-сайта.

Спасибо.

Ответы [ 4 ]

6 голосов
/ 23 ноября 2011

Вот краткий пример того, как вы можете получить свои данные с помощью устройства чтения данных:

var customers = new List<Customer>();
string sql = "SELECT * FROM customers";
using (var cnn = new SqlConnection(
    "Data Source=Your_Server;Initial Catalog=Your_Database;Integrated Security=SSPI;")) {
    cnn.Open();
    using (var cmd = new SqlCommand(sql, cnn))
    using (SqlDataReader reader = cmd.ExecuteReader()) {
        // Get ordinals from the customers table
        int custIdOrdinal = reader.GetOrdinal("CustomerID");
        int nameOrdinal = reader.GetOrdinal("Name");
        int imageOrdinal = reader.GetOrdinal("Image");
        while (reader.Read()) {
            var customer = new Customer();
            customer.CustomerID = reader.GetInt32(custIdOrdinal);
            customer.Name = reader.IsDBNull(nameOrdinal)
                            ? null
                            : reader.GetString(nameOrdinal);
            if (!reader.IsDBNull(imageOrdinal)) {
                var bytes = reader.GetSqlBytes(imageOrdinal);
                customer.Image = bytes.Buffer;
            }
            customers.Add(customer);
        }
    }
}

Если столбец таблицы обнуляем, то перед считыванием данных проверьте reader.IsDBNull.

4 голосов
/ 23 ноября 2011

Вы говорите о создании ORM (Object-Relational Mapper), который является слишком широким для полного ответа в одном ответе здесь.

Здесь есть подробное руководство по написанию одного здесь .

Однако следует отметить, что существует множество инструментов ORM для .NET, и многие из них уже перечислены в других вопросах на этом сайте, таких как этот .

2 голосов
/ 23 ноября 2011

Взгляните на эту статью о отображении типов данных для CLR. Вот определение класса для клиента:

public class Customer {
public int ID {get;private set;}
public string fName {get; set;}
public string lName {get; set;}
public byte[] image {get; set;}
}

Возможно, вы захотите взглянуть на linq to SQL, чтобы понять бит сортировки, есть .OrderBy(f=>f.Name);, который вы можете применить для выполнения заказа по вашему набору данных.

Нужно немного больше информации о том, что вы ищете?

0 голосов
/ 23 ноября 2011

Вы должны использовать SqlConnection и SqlCommand и заполнить DataTable необходимой вам информацией.

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