Связный уровень ADO.NET
Связный уровень ADO.NET
Напомним, что связный уровень ADO.NET позволяет взаимодействовать с базой данных, используя объекты соединения, команд и чтения данных вашего поставщика данных. Вы уже использовали эти объекты в предыдущем примере DataProviderFactory, но давайте рассмотрим соответствующий процесс еще раз более подробно. Чтобы соединиться с базой данных и прочитать ее записи с помощью объекта чтения данных, необходимо выполнить следующие шаги
1. Разместить, настроить и открыть объект соединения.
2. Разместить и настроить объект команды, передав ему объект соединения в виде аргумента конструктора или с помощью свойства Connection.
3. Вызвать ExecuteReader() для сконфигурированного объекта команды.
4. Обработать каждую запись, используя метод Read() объекта чтения данных.
Для начала создайте новое консольное приложение с названием CarsDataReader. Нашей целью является открытие соединения (с помощью объекта SqlConnection) а отправка SQL-запроса (с помощью объекта SqlCommand) для получения всех записей из таблицы Inventory базы данных Cars. Затем мы используем SqlDataReader, чтобы напечатать результаты с помощью индексатора типа. Вот соответствующий программный код Main(), за которым следует его анализ.
class Program {
static void Main(string[] args) {
Console.WriteLine("***** Забавы с чтением данных ***** ");
// Создание и открытие соединения.
SqlConnection cn = new SqlConnection();
cn.ConnectionString = "uid=sa;pwd=;Initial Catalog=Cars;Data Source=(local)";
cn.Open();
// Создание объекта SQL-команды.
string strSQL = "Select * From Inventory";
SqlCommand myCommand = new SqlCommand(strSQL, cn);
// Получение объекта чтения данных в стиле ExecuteReader().
SqlDataReader myDataReader;
myDataReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
// Цикл по результатам.
while (myDataReader.Read()) {
Console.WriteLine("-› Марка – {0}, имя – {1}, цвет – {2}.",
myDataReader["Make"].ToString().Trim(),
myDataReader["PetName"].ToString().Trim(),
myDataReader["Color"].ToString().Trim());
}
// Поскольку был указан CommandBehavior.CloseConnection,
// для соединения нет необходимости явно вызывать Close().
myDataReader.Close();
}
}