Разработка переносимого графического интерфейса пользователя для работы со встраиваемой реляционной БД на примере СУБД SQLite

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

аблиц из БД;

2)организованно представление схемы БД в виде иерархической структуры в самом приложении и её сохранение в XML-файл;

Дальнейшее развитие проекта можно увидеть в:

)увеличении функциональных возможностей по визуальному построению запросов,

2)в совершенствовании механизма и формальном описании правил представления РБД в виде иерархической модели данных (XML-файла),

)добавления полнофункциональной переносимости приложения между различными ОС, отличными от семейства ОС Windows (кроссплатформенности).

 

 

Приложение 1

 

Полный код приложения

 

using System;

using System.IO;System.Collections.Generic;System.Data;System.Linq;System.Xml;System.Xml.Linq;System.Text;System.Windows;System.Windows.Controls;System.Windows.Data;System.Windows.Documents;System.Windows.Input;System.Windows.Media;System.Windows.Media.Imaging;System.Windows.Navigation;System.Windows.Shapes;Finisar.SQLite;

SQLiteSampleProject

{partial class MainWindow : Window

{

///

/// Путь к папке с приложением.

/// appPath;

 

///

/// Имя файла базы данных.

/// baseName;

 

///

/// Запрос базе.

///

string query;

 

///

/// Структурированное представление бд.

/// xDoc = new XDocument();

 

//=======================================================================================MainWindow()

{.Initialize();();

}

 

//=======================================================================================

///

/// Выход по кнопке в главном меню.

/// void Bt_Exit_Click(object sender, RoutedEventArgs e)

{();

}

///

/// Активация кнопок интерфейса (к примеру, после корректной загрузки или создания базы данных).

/// void ActivateButtons()

{_Table.IsEnabled = true;_Console.IsEnabled = true;

}

 

 

///

/// Деактивация кнопок интерфейса.

/// void DeactivateButtons()

{_Table.IsEnabled = true;_Console.IsEnabled = true;

}

 

///

/// Событие для создания нового файла базы данных.

/// void Bt_CreateBase_Click(object sender, RoutedEventArgs e)

{

{= NewBase.GetNewBaseName(); //открываем диалоговое окно, из которого получаем имя

//для файла новой базы

(baseName != null)

{

appPath = System.IO.Path.Combine(Directory.GetCurrentDirectory(), baseName);

 

//проверим, не создан ли уже такой файл

if (File.Exists(appPath))(MessageBox.Show("База: \"" + appPath + "\" уже создана. Переписать?", "Внимание!", System.Windows.MessageBoxButton.YesNo).ToString()

== System.Windows.Forms.DialogResult.No.ToString())

return;

 

//создаем новый файл базы данных.Create(appPath);

 

//напишем сообщение в строку состояния_BottomBar.Items[0] = "База успешно создана: \"" + appPath + "\"";

 

//напишем сообщение в лог.AddInfo("Base successfully created -> \"" + appPath + "\"");

 

 

//-------------------------------------------------------------------= new XDocument(new XElement("DataBase"));.Root.SetAttributeValue("name", baseName);

.FromXDocument(Tv_BaseNavigator, xDoc);

//-------------------------------------------------------------------

 

//сделаем доступным интерфейс приложения();

}return;

}(Exception ex) //если произошла ошибка при создании файла базы

{.Show(ex.Message, "Ошибка при создании базы!"); //покажем на экран

"+ex.Message);//">Log.AddInfo("Error on base creating -> " + ex.Message); //и запишем в лог

}

}

 

///

/// Событие для открытия файла базы данных.

/// void Bt_OpenBase_Click(object sender, RoutedEventArgs e)

{

{= OpenBase.GetOpenBaseName(); //открываем диалоговое окно, из которого получаем имя

//файла базы данных, которую необходимо открыть

if (baseName != null)

{= System.IO.Path.Combine(Directory.GetCurrentDirectory(), baseName);

 

//напишем сообщение в строку состояния_BottomBar.Items[0] = "База успешно загружена: \"" + appPath + "\"";

 

//напишем сообщение в лог.AddInfo("Base successfully loaded -> \"" + appPath + "\"");

 

 

//-------------------------------------------------------------------();.FromXDocument(Tv_BaseNavigator, xDoc);

//-------------------------------------------------------------------

 

//сделаем доступным интерфейс приложения();

}return;

}(Exception ex) //если произошла ошибка при создании файла базы

{.Show(ex.Message, "Ошибка при загрузке базы!"); //покажем на экран

"+ex.Message);//">Log.AddInfo("Error on base loading -> " + ex.Message); //и запишем в лог

}

}

///

/// Добавление в текущую базу новой таблицы.

/// void Bt_CreateTable_Click(object sender, RoutedEventArgs e)

{

{= NewTable.GetQueryForTableCreate();

(query != null)

{

//отдаем сформированный запрос провайдеру для обработки и отсылки к базе

if (!SQLiteProvider.ExecuteNonQuery(appPath, query).HasValue)

return;

 

//напишем сообщение в строку состояния_BottomBar.Items[0] = "Таблица успешно создана: #" + query + "#";

 

//напишем сообщение в лог.AddInfo("Table successfully created -> #" + query + "#");

 

//-------------------------------------------------------------------();.FromXDocument(Tv_BaseNavigator, xDoc);

//-------------------------------------------------------------------

 

}return;

}(Exception ex) //если произошла ошибка при создании новой таблицы

{.Show(ex.Message, "Ошибка при создании таблицы!"); //покажем на экран

"+ex.Message);//">Log.AddInfo("Error on table creating -> " + ex.Message); //и запишем в лог

}

}

 

///

/// Строит стуктуру БД в объект.

/// void BuildXDoc()

{

{= new XDocument(new XElement("DataBase"));.Root.SetAttributeValue("name", baseName);

tablesNames=SQLiteProvider.GetTablesNames(appPath);.Root.SetAttributeValue("tablesCount",tablesNames.Count);"> tablesNames = SQLiteProvider.GetTablesNames(appPath);.Root.SetAttributeValue("tablesCount", tablesNames.Count);

(string s in tablesNames)

{xEl1 = new XElement("Table");.SetAttributeValue("name", s);

= "SELECT * FROM " + s;[] drs = SQLiteProvider.Query(appPath, query);.SetAttributeValue("columnsCount", drs[0].Table.Columns.Count);

(DataRow dr in drs)

{xEl2 = new XElement("Row");

i = 0;(object cell in dr.ItemArray)

{xEl3 = new XElement("Field");.SetAt