| Китай |
Просмотр данных средствами ADO.NET с привязкой на этапе выполнения
Файлы к лабораторной работе Вы можете скачать
здесь.
В данной работе мы рассмотрим различные способы извлечения данных для просмотра из базы данных Northwind. При этом все соединения с базой данных и заполнения данными элементов просмотра будут осуществляться во время выполнения. Это не означает, что соединение с базой данных будет открыто на всем протяжении работы с формой.
Соединение открывается лишь на то время, когда происходит заполнение таблицы данными. После этого незаметно для пользователя осуществляется доступ к уже загруженным данным, представленным в виде кода XML на локальном компьютере, а соединение с сервером разрывается. Такой способ называется работой без соединения, что существенно экономит ресурсы сервера для доступа других пользователей.
Выборка данных с использованием объекта DataReader
-
В
отдельной папке для размещения лабораторной работы создайте
новый проект Windows Application для C# с именем DataView
-
Поместите
в форму из вкладки Windows Forms панели Toolbox элементы
управления Label, TextBox, ListBox, Button со свойствами,
которые перечислены в таблице
-
Разместите
на форме управляющие элементы так, как показано на снимке
Обратите внимание, что свойству DataBindings списка не присваивается значение. В данном случае мы будем применять несвязанный с данными элемент управления ListBox. Мы отказались от включения в форму компонетов связи с данными, а будем создавать соответствующие объекты в коде C# на этапе выполнения.
-
Создайте
обработчик события Click для кнопки Button и заполните
его следующим кодом
private void btnLoadList_Click(object sender, System.EventArgs e)
{
// Описания локальных ссылочных переменных
System.Data.OleDb.OleDbCommand ocmdCust;
System.Data.OleDb.OleDbDataReader odrCust; // Создается на стеке
System.String strSQL;
// Сформировать строку SQL
strSQL = "SELECT CompanyName FROM Customers WHERE CustomerID LIKE '"
+ this.txtCustLimit.Text + "%'";
// Выполнение в защищенном режиме с перехватом исключений
try
{
// Создать экземпляр команды
ocmdCust = new System.Data.OleDb.OleDbCommand();
// Создать объект соединения и ввести текст команды
ocmdCust.Connection = new System.Data.OleDb.OleDbConnection(
BuildCnnStr("localhost", "Northwind"));
ocmdCust.Connection.Open();
ocmdCust.CommandText = strSQL;
// Создать экземпляр объекта чтения данных
odrCust = ocmdCust.ExecuteReader(
System.Data.CommandBehavior.SequentialAccess);
// Заполнить список
lstCustomers.Items.Clear();
lstCustomers.BeginUpdate();
while(odrCust.Read())
{
int numCol = odrCust.GetOrdinal("CompanyName");
lstCustomers.Items.Add(odrCust.GetString(numCol));
}
lstCustomers.EndUpdate();
}
catch(System.Data.OleDb.OleDbException oextData)
{
MessageBox.Show(oextData.Message);
}
}
public static string BuildCnnStr(string strServer, string strDatabase)
{// Для доступности из другой формы
string strTemp = "Provider=SQLOleDB; Data Source="
+ strServer + ";";
strTemp += "Initial Catalog=" + strDatabase + ";";
strTemp += "Integrated Security=SSPI";
return strTemp;
}
Листинг
8.1.
Код обработчика кнопки
-
Постройте
форму и убедитесь в ее работоспособности. Результат должен
быть таким
Здесь мы рассмотрели способ использования элемента управления ListBox, при котором он остается полностью не связанным с данными. Все происходит на этапе выполнения обработчика кнопки.



