Читать в оригинале

<< ПредыдущаяОглавлениеСледующая >>


3.4. Пример создания приложения БД "вручную"

Создадим в параллель два приложения для работы с созданными ранее базами данных, аналогичные приложению, рассмотренному выше (см. п. 3.1). Работа будет проводиться, соответственно, со следующими таблицами:

- Microsoft Access - BDTur_firm.mdb (см. п. 1.3);

- Microsoft SQL - BDTur_firmSQL.mdf (см. п. 1.4).

Начнем с запуска Visual Studio 2008 и создания нового проекта Windows Application.

Размещаем на создавшейся форме элемент управления DataGridView, свойству Dock которого устанавливаем значение Fill. Переходим в код формы и подключаем соответствующие пространства имен:

- для MS Access - using System.Data.OleDb;

- для MS SQL - using System.Data.SqlClient;

В любом случае необходимо подключить пространство имен System.Data.

В конструкторе формы после InitializeComponent создаем объект DataAdapter.

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

public Form1() {
//
// Required for Windows Form Designer support
//
InitializeComponent();
OleDbDataAdapter dataAdapter = new OleDbDataAdapter(CommandText, ConnectionString);
}

А в приложении, работающем с MS SQL:

public Form1() {
//
// Required for Windows Form Designer support
//
InitializeComponent();
SqlDataAdapter dataAdapter = new SqlDataAdapter(CommandText, ConnectionString);
}

Как видно из приведенного кода, фрагменты отличаются только названиями объектов.

В качестве параметров DataAdapter передаются CommandText и ConnectionString. Переменная типа string CommandText представляет собой обычный SQL-запрос на выборку из таблицы «Туристы», а переменная типа ConnectionString - это так называемая строка подключения, в которой указываются расположение базы данных, ее название, параметры авторизации и пр.

Воспользуемся следующими строками подключения и командами:

// MS Access
CommandText: "SELECT [Код туриста], Фамилия, Имя, Отчество FROM Туристы";
ConnectionString: "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="D:\ВМИ\For ADO\ BDTur_firm.mdb"
// MS SQL:
CommandText: "SELECT CustomerID, CompanyName, ContactName, ContactTitle, Address, City, Region, PostalCode, Country, Phone, Fax FROM Customers"
ConnectionString: "Data Source=.\SQLEXPRESS;AttachDbFilename="D:\ВМИ\For ADO\ BDTur_firmSQL.mdf';
Integrated Security=True;Connect Timeout=30;User Instance=True"

Обратите внимание на названия переменных CommandText и ConnectionString. Когда создается объект DataAdapter, в качестве параметров можно передать названия строк, таких как cmdText и conString, или даже cmt и cns - совершенно равноправно, не забыв, конечно же, назвать также эти переменные в классе Forml. Но сама среда Visual Studio 2008 генерирует эти строки именно с такими названиями - CommandText и ConnectionString, поэтому такое название переменных облегчает поддержку и сопровождение разработанного программного продукта.

Продолжим создание программы. Дальнейший код одинаков для обоих вариантов.

Создаем объект

DataSet: DataSet ds = new DataSet();

Заполняем таблицу «Туристы» объекта ds данными из базы:

dataAdapter.Fill(ds, "Туристы");

Связываем источник данных объекта dataGridView1 с таблицей «Туристы» объекта ds:

dataGrid1.DataSource = ds.Tables["Туристы"].DefaultView;

Теперь запустим созданное приложение. Если все сделано правильно, то на экранной форме отобразится содержимое таблицы «Туристы».

Теперь изменим код следующим образом:

dataAdapter.Fill(ds, "Туристы2");

dataGridView1.DataSource = ds.Tables["Туристы2"].DefaultView; Таблицы «Туристы2» в БД нет, однако код по-прежнему работает. Это связано с тем, что таблица, которую мы называем «Туристы», при вызове метода Fill объекта dataAdapter может быть названа как угодно - ее содержимое будет представлять собой извлекаемую таблицу из базы данных. При указании источника данных (DataSource) для объекта dataGridView1 мы ссылаемся именно на таблицу «Туристы», которая была создана при вызове метода Fill. Таким образом, при заполнении таблиц их можно называть произвольным образом. Однако для реальных проектов рекомендуется использовать настоящие названия таблиц, чтобы избежать путаницы и трудностей в сопровождении.

 



<< ПредыдущаяОглавлениеСледующая >>