Следующим примером станет использование классов ADO.NET для получения доступа к данным, хранящимся в базе данных. Соответствующие файлы находятся в подпапке Connected.
Нам необходимы объекты для соединения, хранения команд, передаваемых базе данных, и хранения самих данных, поэтому мы определяем три указателя на объекты классов SqlConnection, SqlCommand и SqlDataReader:
SqlConnectlon *conn = 0;
SqlCommand * command = 0;
SqlDataReader *reader = 0;
Далее инициализируется строка соединения с базой данных Вы можете изменить значение поля, предназначенного для хранения имени сервера, на имя своего компьютера Необходимо также определить имя пользователя и пароль для получения доступа к базе данных Строку соединения можно устанавливать и как свойство объекта SqlConnection В качестве команды, которая будет передаваться базе данных в нашем примере, выбран простой оператор отбора данных:
String *ConnString =
"server=localhost;
uid=sa;
pwd=;
database=Northwind";
String *cmd =
"select Customerld,
CompanyName from Customers";
На рис. 9.2 приведены списки таблиц и хранимых процедур базы данных Northwmd В теле блока try создается объект класса SqlConnection. Затем открывается соединение с базой данных, ведь это должно быть сделано до передачи базе данных какой-либо команды После этого создается объект класса SqlCommand, связанный с созданным ранее соединением.
conn = new SqlConnection(ConnString);
conn->0pen(); // Открыть
command = new SqlCommand(cmd, conn);
Рис. 9.2. Таблицы и хранимые процедуры, входящие в состав базы данных Northwind, отображаются в окне Server Explorer
Если команда выполняется посредством использования метода ExecuteReader объекта SqlCommand, то при этом возвращается экземпляр класса SqlDataReader Этот объект можно использовать для перемещения по полученному набору данных Для извлечения данных из текущей строки набора можно использовать имя столбца
reader = command->ExecuteReader();
// читатель = команда-> ExecuteReader ();
if (reader != 0)
{
Console::WriteLine(
"CustomerldXtCompanyName");
while (reader->Read()) // Чтение
Console::WriteLine (
"{0}\t\t{l}",
reader->get_Item("Customerld"),
reader->get_Item("CompanyName"));
}