Обучающие курсы:

Обучение профессии "Разработчик C#" + стажировка в Mail.ru
Обучение профессии "Разработчик Python" + трудоустройство
Обучение профессии "Веб-разработчик" + стажировка в Mail.ru


Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
Стандарты для 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.
Администратор: admin@programmer-lib.ru