Главная страница Библиотека (скачать книги) Скачать софт Введение в программирование Стандарты для C++ Уроки по C# Уроки по Python HTML Веб-дизайн Ассемблер в среде Windows ActiveX Javascript Общее о Линукс Линукс - подробно Линукс - новое Delphi Паскаль для начинающих Турбопаскаль Новости Партнеры Наши предложения Архив новостей |
Прелюдия к практическому примеру.Если обратиться к первоисточникам (MSDN), то можно заметить, что классы для работы с ODBC и классы для работы с OleDb чрезвычайно схожи как по названиям, так и по названиям методов и свойств, которые они содержат. В данном разделе мы рассмотрим функцию, которая отсутствует в классе для работы с ODBC (надеюсь, читатель сумеет ответить на вопрос почему). Эта функция позволяет определить структуру базы данных, к которой произошло подключение. Класс OleDbConnection public DataTable GetOleDbSchemaTable(Guid schema, object[] restrictions); Данная функция возвращает информацию о структуре элементов, указанных в первом параметре, в виде таблицы. Первый параметр - поле ненаследуемого класса OleDbSchemaGuid, в котором необходимо указать тип запрашиваемой информации. Информацию можно запросить о: таблицах базы, структуре таблиц базы, ограничениях, ключах, хранимых процедурах и т. д. Второй параметр содержит информацию, специфичную для первого параметра. Например, если необходимо узнать какие таблицы хранятся в базе данных, то второй параметр будет массивом из 4-х элементов.
Более подробную информацию можно получить, изучив практические примеры, или заглянув в MSDN. Практический пример работы с базами с помощью ADO.NET.Данное приложение является учебным примером, в котором пользователь имеет возможность осуществить просмотр структуры таблиц базы данных "Library". using System; using System.Drawing; using System.Windows.Forms; using System.Data; using System.Data.OleDb; namespace CSharpApplication.OleDb { class OleDbExample : Form { // Источник данных DataSet dataset = new DataSet("Library"); // Сетка DataGrid datagrid = new DataGrid(); // Объект для подключения к базы данных через // OleDb Provider OleDbConnection connection = new OleDbConnection(); static void Main() { Application.Run(new OleDbExample()); } OleDbExample() { this.WindowState = FormWindowState.Maximized; this.Text = "OleDb Example"; // Строка соединения для Access'овской базы данных string con = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=Library.mdb"; connection.ConnectionString = con; // Открываем соединение connection.Open(); // Получаем список таблиц пользователя, находящихся в базе DataTable Tables = connection.GetOleDbSchemaTable( OleDbSchemaGuid.Tables, new object[] {null, null, null, "TABLE"}); // Перебираем строки полученной таблицы foreach(DataRow row in Tables.Rows) { // Вынимаем имя таблицы пользователя (3-й столбец) string Name = (string)row[2]; // Вынимаем структуру столбцов для этой таблицы DataTable ColumnsInTable = connection.GetOleDbSchemaTable( OleDbSchemaGuid.Columns, new object[] {null, null, Name, null}); // Удаляем "излишние" данные // (Определяются опытным путем) ColumnsInTable.Columns.RemoveAt(0); ColumnsInTable.Columns.RemoveAt(0); ColumnsInTable.Columns.RemoveAt(0); ColumnsInTable.Columns.RemoveAt(1); ColumnsInTable.Columns.RemoveAt(1); ColumnsInTable.Columns.RemoveAt(4); ColumnsInTable.Columns.RemoveAt(5); ColumnsInTable.Columns.RemoveAt(5); ColumnsInTable.Columns.RemoveAt(6); ColumnsInTable.Columns.RemoveAt(9); ColumnsInTable.Columns.RemoveAt(9); ColumnsInTable.Columns.RemoveAt(10); ColumnsInTable.Columns.RemoveAt(10); ColumnsInTable.Columns.RemoveAt(10); ColumnsInTable.Columns.RemoveAt(10); ColumnsInTable.Columns.RemoveAt(10); ColumnsInTable.Columns.RemoveAt(10); // Присваиваем этой таблице имя ColumnsInTable.TableName = Name; // Добавляем таблицу в источник данных dataset.Tables.Add(ColumnsInTable); } datagrid.Parent = this; // Указываем на отображаемый сеткой источник данных datagrid.DataSource = dataset; datagrid.ClientSize = this.ClientSize; datagrid.Location = new Point(0, 0); datagrid.Anchor = AnchorStyles.Bottom | AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; // Заголовок сетки datagrid.CaptionText = "Structure of tables of database \"Library\""; // Шрифт заголовка сетки datagrid.CaptionFont = new Font("Verdana", 16); // Цвет ссылок на названия таблиц datagrid.LinkColor = Color.Blue; // Шрифт сетки datagrid.Font = new Font("Arial", 10); // Сетка предназначена только для чтения datagrid.ReadOnly = true; // Разворачиваем имена таблиц datagrid.Expand(-1); } protected override void OnClosing(System.ComponentModel.CancelEventArgs e) { // Закрываем соединение connection.Close(); base.OnClosing (e); } } } Домашнее заданиеРеализовать построение схемы данных (а-ля Access) произвольной базы данных (в базе более одной таблицы). |
|
Библиотека программиста. 2009. |
|