Разработка переносимого графического интерфейса пользователя для работы со встраиваемой реляционной БД на примере СУБД SQLite
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
tributeValue("name", dr.Table.Columns[i].ColumnName);.SetAttributeValue("value", cell);++;.Add(xEl3);
}.Add(xEl2);
}.Root.Add(xEl1);
}
}(Exception ex) //если произошла ошибка при генерации объекта, представляющего структуру бд
{.Show(ex.Message, "Ошибка при генерации структуры БД!"); //покажем на экран
"+ex.Message);//">Log.AddInfo("Error on building XDocument object -> " + ex.Message); //и запишем в лог
}
}
///
/// Действия, которые необходимо выполнить перед закрытием приложения.
void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)">/// void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
/* if (System.Windows.Forms.MessageBox.Show("Приложение будет закрыто. Вы уверены?", "Внимание!", System.Windows.Forms.MessageBoxButtons.YesNo).ToString()
== System.Windows.Forms.DialogResult.No.ToString());*/.Save(appPath + ".xml");.Save();.Current.Shutdown();
}
}
///
/// Класс, позволяющий строить графическое представление иерархически структурированных данных.
/// static class TreeViewBuilder
{
///
/// Построение заданного дерева из заданного объекта LINQ.
///
///
///
///
public static bool FromXDocument(TreeView treeView, XDocument xDocument)
{b;
{.Items.Clear();
treeNode = new TreeViewItem();.Header = xDocument.Root.Name.LocalName + ": ";(XAttribute xA in xDocument.Root.Attributes())
{.Header += xA.ToString() + " ";
}.IsExpanded = true;.Items.Add(treeNode);
(treeNode, xDocument.Root); = true;
}(Exception ex) //если произошла ошибка при построении дерева
{.Show(ex.Message, "Ошибка при построении дерева базы данных!"); //покажем на экран
"+ex.Message);//=false;">Log.AddInfo("Error on building TreeView from XDocument -> " + ex.Message); //и запишем в лог= false;
}b;
}
///
/// Переносит значение "имя тега" + "атрибут имя" из объекта в узел дерева.
///
///
///
private static void BuildNodes(TreeViewItem treeNode, XElement element)
{
//рекурсивный обход кстати(XNode child in element.Nodes())
{(child.NodeType)
{XmlNodeType.Element:childElement = child as XElement;childTreeNode = new TreeViewItem();.Header = childElement.Name.LocalName + ": ";(XAttribute xA in childElement.Attributes())
{.Header += xA.ToString() + " ";
}.Items.Add(childTreeNode);(childTreeNode, childElement);;XmlNodeType.Text:childText = child as XText;.Items.Add(childText.Value);;
}
}
}
}
}
System;System.Windows;System.Windows.Input;
SQLiteSampleProject
{
///
/// Диалоговое окно с запросом имени для новой базы данных.
/// partial class NewBase : Window
{
///
/// Имя базы.
/// baseName;
//=======================================================================================NewBase()
{();
}
//=======================================================================================
///
/// Получить имя базы данных.
///
/// static string GetNewBaseName()
{w = new NewBase();
w.ShowDialog(); //важный момент - окно диалоговое и перехватывает управление на себя
return w.baseName;
}
void Window_Loaded(object sender, RoutedEventArgs e)
{
//добавим удобностей для пользователя:_NewBaseName.Focus(); //поле для ввода имени получает фокус_NewBaseName.SelectAll(); //весь текст в поле выбран
}
void Bt_OK_Click(object sender, RoutedEventArgs e)
{
//проверим, чтобы имя базы было не пустым(Tb_NewBaseName.Text != "")
{
//если все верно, то имя базы передаем в выходную переменную и закрываем окно
baseName = Tb_NewBaseName.Text + ".db";
Close();
}MessageBox.Show("Введите имя базы!"); //в противном случае просим ввести имя.
}
void Bt_Cancel_Click(object sender, RoutedEventArgs e)
{
//закроем окно, задав имя базы, как пустое
baseName = null;();
}
void Tb_NewBaseName_KeyDown(object sender, KeyEventArgs e)
{
//для удобства организуем возможность принять изменения по нажатии клавиши на клавиатуре
if (e.Key == Key.Enter)
{_OK_Click(Bt_Ok, null);
}
}
void Window_KeyDown(object sender, KeyEventArgs e)
{(e.Key == Key.Escape)
{_Cancel_Click(null, null);
}
}
}
}
System;System.IO;System.Windows;System.Windows.Input;System.Collections.Generic;
SQLiteSampleProject
{
///
/// Диалоговое окно с возможностью выбрать базу данных для открытия.
/// partial class OpenBase : Window
{
///
/// Имя базы для загрузки.
/// baseName;
//=======================================================================================OpenBase()
{();
}
//=======================================================================================
///
/// Получить имя базы данных.
///
///
public static string GetOpenBaseName()
{w = new OpenBase();
w.ShowDialog(); //важный момент - окно диалоговое и перехватывает управление на себя
return w.baseName;
}
void Window_Loaded(object sender, RoutedEventArgs e)
{[] files = Directory.GetFiles(Directory.GetCurrentDirectory(), "*.db"); //производим выборку всех файлов баз данных
//(файлов с расширением *.db) из папки приложения
Directory.GetFiles(Directory.GetCurrentDirectory(), "*.db3").CopyTo(files, files.Length - 1); //и с расширением *.db3.GetFiles(Directory.GetCurrentDirectory(), "*.sqlite").CopyTo(files, files.Length - 1); //и с расширением *.sqlite
(string s in files)
{_Bases.Items.Add(System.Text.RegularExpressions.Regex.Replace(s, @".+\\", "").ToString());
}
//поле выбора файла базы данных получает фокус
Lb_Bases.Focus();
}
void Bt_OK_Click(object sender, RoutedEventArgs e)
{
//проверим, чтобы имя базы было не пустым
if (Lb_Bases.SelectedItem != null)
{
//если все верно, то имя базы передаем в выходную переменную и закрываем окно
baseName = Lb_Bases.SelectedItem.ToString();
Close();
}MessageBox.Show("База не выбрана!"); //в противном случае