Разработка переносимого графического интерфейса пользователя для работы со встраиваемой реляционной БД на примере СУБД 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("База не выбрана!"); //в противном случае