Часто в программе бывает необходимо получить из базы данных несколько записей (строк), но как же выполнить такой запрос и правильно обработать полученные данные? Покажем это на примере, используя .NET Framework и язык C#.
Пусть имеется, к примеру, база данных книжного интернет-магазина, созданная в Oracle. Соединение с ней в программе установлено.
1 2 3 |
OracleConnection ConnectionToOracle; ConnectionToOracle = new OracleConnection(@"ВАША СТРОКА ПОДКЛЮЧЕНИЯ"); ConnectionToOracle.Open(); |
Есть номер заказа:
1 |
string ORDNum = "1701"; |
В базе данных имеется таблица, которая называется Состав заказа (Composition). Ее структура представлена ниже.
Имя атрибута | Code |
ID записи | ID |
Номер заказа | Ord_Num |
Код товара в магазине | B_Id |
Количество книг | Com_Number |
Цена одной книги | Com_Price |
Одному заказу может соответствовать несколько записей из таблицы Composition. Давайте получим из этой таблицы все ID книг (B_Id), которые были включены в данный заказ.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
OracleCommand cmd = new OracleCommand(); cmd.CommandText = "SELECT \"B_Id\" FROM \"Composition\" WHERE \"Composition\".\"Ord_Num\" = '" + ORDNum + "'"; cmd.Connection = ConnectionToOracle; OracleDataReader reader = cmd.ExecuteReader(); List<string> bookID = new List<string>(); while (reader.Read()) { bookID.Add(reader[0].ToString()); } reader.Close(); |
Сначала создаем экземпляр класса OracleCommand (строка 1), затем формируем запрос у базе данных и указываем его в свойстве cmd (строка 3), также указываем в свойстве cmd наше подключение к БД (строка 4). Теперь создаем экземпляр класса OracleDataReader и даем ему ссылку на начало исполнения запроса к чтению данных (строка 5). Создаем список bookID, в котором будем хранить полученные ID книг (7). В цикле while (строки 9-12) выполняем чтение и сохранение данных. Число [0] указывает на номер столбца из записи, возвращаемой запросом SELECT; поскольку в нашем запросе указан всего лишь один столбец (B_Id), и нам требуются данные именно из него, то мы указываем номер столбца равный нулю. В конце необходимо закрыть reader (строка 14).
Поделиться в соц. сетях: