Главная страница Библиотека (скачать книги) Скачать софт Введение в программирование Стандарты для C++ Уроки по C# Уроки по Python HTML Веб-дизайн Ассемблер в среде Windows ActiveX Javascript Общее о Линукс Линукс - подробно Линукс - новое Delphi Паскаль для начинающих Турбопаскаль Новости Партнеры Наши предложения Архив новостей |
Практический пример работы с базами данных через ODBC-драйвер.Данное приложение является учебным примером, в котором пользователь имеет возможность отправлять SQL-запросы к базе данных Books и просматривать результаты выполнения этих запросов. using System; using System.Drawing; using System.Windows.Forms; using System.Data; using System.Data.Odbc; namespace CSharpApplication.ODBC { class ODBCExample : Form { // Источник данных DataSet dataset = new DataSet("Library"); // Элемент управления "сетка" DataGrid datagrid = new DataGrid(); // Объект для подключения к базе данных OdbcConnection connection = new OdbcConnection(); // Объект для выполнения запросов к базе данных OdbcCommand command = new OdbcCommand(); // Объект для связи между базой данных и источником данных OdbcDataAdapter adapter = new OdbcDataAdapter(); // Текст запроса TextBox Query = new TextBox(); // Выполнить запрос Button Execute = new Button(); static void Main() { Application.Run(new ODBCExample()); } ODBCExample() { this.WindowState = FormWindowState.Maximized; this.Text = "ODBC Example"; this.Icon = new Icon(GetType(), "books.ico"); // Строка соединения с базой данных string con = @"Driver={Microsoft Access Driver (*.mdb)};DBQ=books.mdb"; connection.ConnectionString = con; // Открываем соединение connection.Open(); // Устанавливаем связь между объектами связи и команд command.Connection = connection; // Запрос по умолчанию command.CommandText = "select * from books"; // Указываем запрос для выполнения adapter.SelectCommand = command; // Заполняем объект источника данных adapter.Fill(dataset); // Запрет удаления данных dataset.Tables[0].DefaultView.AllowDelete = false; // Запрет модификации данных dataset.Tables[0].DefaultView.AllowEdit = false; // Запрет добавления данных dataset.Tables[0].DefaultView.AllowNew = false; // Размещаем сетку datagrid.Parent = this; // Привязываем сетку к источнику данных // (с этого момента она будет отображать его содержимое) datagrid.DataSource = dataset.Tables[0]; datagrid.ClientSize = new Size(this.ClientSize.Width, this.ClientSize.Height - 100); datagrid.Location = new Point(0, 0); datagrid.Anchor = AnchorStyles.Bottom | AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; Query.Parent = this; Query.Dock = DockStyle.Bottom; Query.Height = 80; Query.Multiline = true; Query.ScrollBars = ScrollBars.Vertical; Query.Font = new Font("Arial", 12); // Ставим фокус на текстовое поле Query.Select(); Execute.Parent = this; Execute.Dock = DockStyle.Bottom; Execute.Height = 20; Execute.Text = "Выполнить запрос"; Execute.Click += new EventHandler(Execute_Click); } // Обработчик закрытия формы protected override void OnClosing(System.ComponentModel.CancelEventArgs e) { // Закрываем соединение с базой данных connection.Close(); base.OnClosing (e); } // Обработчик нажатия на кнопку private void Execute_Click(object sender, EventArgs e) { ExecuteQuery(); } // Попытка выполнения запроса private void ExecuteQuery() { // Переводим текст запроса в нижний регистр Query.Text.ToLower(); // Подставляем его в объект command.CommandText = Query.Text; // Запрос на выборку? if(Query.Text.StartsWith("select")) { // Указываем запрос для выполнения adapter.SelectCommand = command; // Очищаем содержимое источника данных dataset.Clear(); try { // Заполняем объект источника данных adapter.Fill(dataset); // Привязываем сетку к источнику данных datagrid.DataSource = dataset.Tables[0]; } catch(Exception ex) { // Обработка исключений // (например, некорректный запрос) MessageBox.Show(ex.Message); } } // Другой тип запроса else { try { // Попытка выполнить запрос пользователя command.ExecuteNonQuery(); } catch(Exception ex) { MessageBox.Show(ex.Message); return; } // Очищаем содержимое источника данных dataset.Clear(); // Снова запрашиваем содержимое таблицы command.CommandText = "select * from books"; adapter.SelectCommand = command; try { // Заполняем источник данных adapter.Fill(dataset); datagrid.DataSource = dataset.Tables[0]; } catch(Exception ex) { MessageBox.Show(ex.Message); } } } } } Домашнее заданиеРазработать визуальный интерфейс для базы данных Library. Требования: возможность добавления, изменения и удаления данных из таблиц базы. |
|
Библиотека программиста. 2009. |
|