Главная · Карта сайта · Поиск · Статьи · Компьютерные курсы · Обучающие программы · Открытые проекты · Веб-программирование · Создание интернет-сайта · Полезные ссылки · Глоссарий · Контакты · Декабрь 09 2016 20:20:56
Последнее опубликованное

Что такое Model-View-Controller
Pattern Model-View-Controller

Как создать свой веб-сайт
Как создать свой сайт в интернете

Разное
Статистика

Универсальная SQL консоль DbConsole™


Все проекты с исходным кодом

Описание решения
Как пользоваться консолью

Универсальная SQL консоль DbConsole

О программе DbConsole™

Данная программа представляет собой практически обычную SQL консоль. В задачи подобных приложений входит выполнение SQL запросов и отображение их результатов. Особенность DbConsole в том, что она рассчитана на работу с различными реляционными базами данных за счет расширяемой архитектуры. Здесь речь идет о поиске и динамической загрузке провайдеров баз данных, которые выступают в роли Plug-In компонентов по отношению к основному приложению. Пользователь может выбрать любого из найденных программой провайдеров и через него осуществить соединение с базой данных. Далее все как обычно: вводим SQL запрос и смотрим на экране результат его выполнения. Сервис DbConsole также позволяет выполнять несколько запросов в контексте одной транзакции, что может быть полезно для отмены результатов ошибочных действий пользователя в ходе модификации данных.

Скачать программу.
Скачать исходный код.
Скачать тестовый набор данных Microsoft Access.
Скачать Microsoft .NET Framework 3.5 SP1.

Описание решения

Решение, связанное с расширяемой архитектурой консоли, основано на использовании единой программной спецификации провайдеров баз данных, разработанной компанией Microsoft для своей платформы .NET Framework. Эта программная спецификация является частью концепций ADO.NET, суть которой заключается в унификации поведения любого провайдера базы данных за счет реализации им набора интерфейсов из пространства имен System.Data.Common. На данный момент самой Microsoft реализованы провайдеры для таких СУБД, как Oracle и SQL Server, а также, универсальные провайдеры на основе протоколов OleDB и ODBC. Компания Oracle для своих СУБД также предлагает собственные реализации протоколов, созданных по предложенным Microsoft правилам. К ним относятся библиотеки программных компонентов для работы с СУБД Oracle и MySql.

СУБД MySql, является разработкой компании Sun Microsystems, но последняя была поглощена компанией Oracle вместе с правами на все ее проекты, в том числе и на программную платформу Java.


Проект DbConsole состоит из трех частей:
  • DbConsoleService. Библиотека, содержащая спецификацию провайдера базы данных – интерфейс IDbConsoleProvider, который необходимо реализовать внешнему программному компоненту, чтобы он мог быть использован в качестве провайдера консоли. Данный подход подробно описан в разделе о внешних командах. Также, в этой библиотеке находится основной сервис манипуляции данными DbConsoleManager, который через провайдера осуществляет доступ к данным. Исходный код этих компонентов представлен ниже:

    using System;
    using System.Data; 
    
    namespace DbConsoleService
    {
        public interface IDbConsoleProvider
        {
            IDbConnection OpenConnection(string _ConnectionString);
            IDbCommand CreateCommand(IDbConnection _Connection, string _SQL);
            IDbCommand CreateCommand(IDbConnection _Connection, IDbTransaction _Transaction, string _SQL);
        }
    
        public class DbConsoleManager
        {
            IDbConnection m_Connection;
            IDbTransaction m_Transaction;
            IDbConsoleProvider m_Provider;
    
            public DbConsoleManager(IDbConsoleProvider _Provider) { m_Provider = _Provider; }
    
            //Открытие соединения
            public void Open(string _ConnectionString)
            {
                m_Connection = m_Provider.OpenConnection(_ConnectionString);   
                m_Connection.Open();
            }
            //Закрытие соединения
            public void Close()
            {
                m_Connection.Close();
            }
            //Инициализация новой транзакции
            public void BeginTransaction()
            {
                m_Transaction = m_Connection.BeginTransaction();
            }
            //Завершение транзакции с сохранением изменений
            public void CommitTransaction()
            {
                m_Transaction.Commit();
                m_Transaction = null;
            }
            //Завершение транзакции с отменой всех изменений
            public void RollbackTransaction()
            {
                m_Transaction.Rollback();
                m_Transaction = null;
            }
            //Получение данных
            public IDataReader Select(string SQL)
            {
                return this.CreateCommand(SQL).ExecuteReader();
            }
            //Обновление данных
            public int Execute(string SQL)
            {
                return this.CreateCommand(SQL).ExecuteNonQuery();
            }
            //Выполнение SQL инструкции
            private IDbCommand CreateCommand(string _SQL)
            {
                if (m_Transaction == null)
                    return m_Provider.CreateCommand(m_Connection, _SQL);
    
                return m_Provider.CreateCommand(m_Connection, m_Transaction, _SQL);
            }
        }
    }
    

  • DbConsole. Приложение WindowsForms, в задачи которого входит поиск и загрузка провайдеров; взаимодействие с пользователем и отображение посредством элементов пользовательского интерфейса результатов запросов. Далее приведен исходный код процедуры поиска и загрузки провайдеров LoadProviders():

            public void LoadProviders()
            {
                if (m_Providers == null)
                    m_Providers = new Dictionary<string, IDbConsoleProvider>();
                else
                    m_Providers.Clear();
    
                string _ErrorMessage = string.Empty; 
            
                foreach (string _ProviderLocation in Directory.GetFiles(System.IO.Path
    .GetDirectoryName(Application.ExecutablePath), "*.dll"))
                    try
                    {
                        Assembly _Assembly;
                        _Assembly = Assembly.LoadFrom(_ProviderLocation);
    
                        foreach (Type _Type in _Assembly.GetTypes())
                        {
                            if (_Type.GetInterface("DbConsoleService.IDbConsoleProvider") == typeof(IDbConsoleProvider))
                                m_Providers.Add(_Type.FullName, (IDbConsoleProvider)Activator.CreateInstance(_Type));
                        }
                    }
                    catch (Exception ex)
                    {
                        _ErrorMessage = _ErrorMessage + ex.Message + Environment.NewLine;  
                    }
    
                if (_ErrorMessage.Length > 0)
                    ShowErrorMessage(_ErrorMessage, "Загрузка провайдеров");   
            }
    

  • XXXConsoleProvider. Провайдеры, работающие на основе различных протоколов управления базами данных или с различными видами СУБД. Проект включает 4 провайдера: для работы с Oracle и SQL Server, а также для работы по OleDB и ODBC протоколам. Исходный код провайдера для работы по OleDB представлен ниже:

    using System;
    using System.Data.OleDb;  
    using DbConsoleService; 
    
    namespace OleDbConsoleProvider
    {
        public class Provider : DbConsoleService.IDbConsoleProvider 
        {
            public System.Data.IDbCommand CreateCommand(System.Data.IDbConnection _Connection, System.Data.IDbTransaction _Transaction, string _SQL)
            {
                return new OleDbCommand(_SQL, (OleDbConnection)_Connection, (OleDbTransaction)_Transaction);   
            }
    
            public System.Data.IDbCommand CreateCommand(System.Data.IDbConnection _Connection, string _SQL)
            {
                return new OleDbCommand(_SQL, (OleDbConnection)_Connection);
            }
    
            public System.Data.IDbConnection OpenConnection(string _ConnectionString)
            {
                if (System.IO.File.Exists(_ConnectionString))
                    return new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + _ConnectionString);
                else
                    return new OleDbConnection(_ConnectionString);
            }
        }
    }
    

Как пользоваться консолью

Все провайдеры должны находиться в том же каталоге, что и приложение DbConsole.exe. Загружаем приложение, выбираем в списке справа (отмечаем галочкой) требуемый провайдер, в появившемся диалоговом окне вводим строку соединения.

SQL консоль DbConsole. Соединение с базой данных

Для соединения с файлом Micosoft Access достаточно указать путь к файлу. Если он расположен там же, где и основное приложение, то достаточно ввести только имя файла. После этого вводим в верхней части главного окна SQL запрос и жмем [Выполнить SQL запрос].

SQL консоль DbConsole. Выполнение запроса

Три первые кнопки на панели управления предназначены для открытия, завершения и отмены транзакции. Все запросы можно выполнять вне контекста транзакции, но тогда нет возможности отменить их результат. Если нажать кнопку [Начать транзакцию], то сама эта кнопка становится неактивной, но активными становятся кнопки [Завершить транзакцию] и [Отменить транзакцию]. С этого момента все запросы начинают выполняться в контексте открытой транзакции, и их результат будет либо сохранен в базе данных нажатием на [Завершить транзакцию] либо отменен нажатием на [Отменить транзакцию].

Компьютерные курсы и курсы программирования
Основы программирования

Курс для начинающих программистов на C# и VB.NET.

SQL 25™

Построение SQL запросов и работа с базой данных.

C# Quick Guide™

Программирование на C#. Краткое руководство.

RegEx

Применение регулярных выражений.

Plug-in архитектура

Примеры программной Plug-in архитектуры.

XML и его расширения

Язык разметки XML и его расширения с примерами.

HTML и разметка гипертекста

Языки HTML, XHTML и CSS с примерами разметки.

Основы веб-дизайна

Основы веб-дизайна: решения типовых задач верстки.

Программирование на PHP

Руководство по программированию на PHP для начинающих.

Справочные материалы

Шаблоны проектирования
Каталог шаблонов проектирования программных компонентов.

Рефакторинг кода
Каталог приемов рефакторинга программного кода.

Гость
Имя

Пароль



Забыли пароль?
Запросите новый здесь
.
Coding Craft. Все права защищены © 2011. Проект Инициативного Народного Фронта Образования - ИНФО-проект.