Разработка переносимого графического интерфейса пользователя для работы со встраиваемой реляционной БД на примере СУБД SQLite
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
просим выбрать базу для загрузки.
}
void Bt_Cancel_Click(object sender, RoutedEventArgs e)
{
//закроем окно, задав имя базы, как пустое
baseName = null;();
}
void Lb_Bases_KeyDown(object sender, KeyEventArgs e)
{
//выбор базы на клавишу(e.Key == Key.Enter)
{_OK_Click(Bt_Ok, null);
}
}
void Lb_Bases_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
//выбор базы на двойной клик по ней
Bt_OK_Click(Bt_Ok, null);
}
void Window_KeyDown(object sender, KeyEventArgs e)
{(e.Key == Key.Escape)
{_Cancel_Click(null, null);
}
}
}
}
System;System.Collections.Generic;System.Windows;System.Windows.Input;SQLiteSampleProject
{
///
/// Диалоговое окно для создания новой таблицы.
/// partial class NewTable : Window
{
///
/// Запрос в текстовом виде.
/// query;
///
/// Был ли уже задан для таблицы первичный ключ.
/// hasPrimaryKey = false;
/=======================================================================================NewTable()
{();
}
//=======================================================================================
///
/// Показать окно для формирования запроса.
///
///
public static string GetQueryForTableCreate()
{w = new NewTable();.ShowDialog();
w.query;
}
void Window_Loaded(object sender, RoutedEventArgs e)
{
//добавим удобностей для пользователя:_NewTableName.Focus(); //поле для ввода имени получает фокус_NewTableName.SelectAll(); //весь текст в поле выбран
}
void Bt_AddField_Click(object sender, RoutedEventArgs e)
{s = Tb_NewColumnName.Text + " " + Cmb_NewColumnType.Text;
(Cb_PrimaryKey.IsChecked.Value)
{
//поле определенно, как первичный ключ+= " PRIMARY KEY";
//далее запрещаем добавление еще одного первичного ключа
Cb_PrimaryKey.IsChecked = false;_PrimaryKey.IsEnabled = false;= true;
}(Cb_NotNull.IsChecked.Value) s += " NOT NULL";_Fields.Items.Add(s);
}
void Bt_OK_Click(object sender, RoutedEventArgs e)
{
//проверим, чтобы было заданно имя для таблицы(Tb_NewTableName.Text != "")
{
//проверим, чтобы у таблицы были поля(Lb_Fields.HasItems)
{
//и проверим, чтобы был первичный ключ
if (hasPrimaryKey == true)
{[] fields = new string[Lb_Fields.Items.Count];_Fields.Items.CopyTo(fields, 0);
ifNotEx = "";(Cb_IfNotExist.IsChecked.Value) ifNotEx = "IF NOT EXISTS ";
= "CREATE TABLE " + ifNotEx + Tb_NewTableName.Text + "(";(int i = 0; i < Lb_Fields.Items.Count - 1; i++)+= Lb_Fields.Items[i] + ", ";+= Lb_Fields.Items[Lb_Fields.Items.Count - 1] + ");";
();
}MessageBox.Show("Задайте первичный ключ!");
}MessageBox.Show("Задайте поля!");
}MessageBox.Show("Введите имя таблицы!");
}
void Bt_Cancel_Click(object sender, RoutedEventArgs e)
{();
}
void Window_KeyDown(object sender, KeyEventArgs e)
{(e.Key == Key.Escape)
{_Cancel_Click(null, null);
}
}
}
}
System;System.Text;System.Collections.Generic;
System.Data;Finisar.SQLite;
SQLiteSampleProject
{
///
/// Предоставляет возможность работать с базой данных на языке запросов SQLite.
/// static class SQLiteProvider
{
///
/// Возвращает число записей, которые затронуло выполнение запроса. Для получения данных из базы используйте метод Query.
///
///
///
///
public static int? ExecuteNonQuery(string appPath, string sSql)
{? n = null; //число затронутых записей
try
{(SQLiteConnection con = new SQLiteConnection())
{.ConnectionString = @"Data Source=" + appPath + ";New=False;Version=3";
//открыть базу для запросов.Open();
using (SQLiteCommand sqlCommand = con.CreateCommand())
{.CommandText = sSql;= sqlCommand.ExecuteNonQuery();
}
//закрыть базу.Close();
}
}(Exception ex)
"+ex.Message);=null;">{.Windows.Forms.MessageBox.Show(ex.Message, "Ошибка при запросе к базе!");.AddInfo("Error on Execute Non Query -> " + ex.Message);= null;
}n;
}
///
/// Возвращает запрошенную информационную строку из таблиц базы данных. Если это не нужно, используйте метод ExecuteNonQuery.
///
///
///
///
public static DataRow[] Query(string appPath, string sSql)
{[] datarows = null;dataadapter = null;dataset = new DataSet();datatable = new DataTable();
{(SQLiteConnection con = new SQLiteConnection())
{.ConnectionString = @"Data Source=" + appPath + ";New=False;Version=3";
//открыть базу для запросов.Open();
using (SQLiteCommand sqlCommand = con.CreateCommand())
{= new SQLiteDataAdapter(sSql, con);.Reset();.Fill(dataset);= dataset.Tables[0];= datatable.Select();
}
//закрыть базу.Close();
}
}(Exception ex)
"+ex.Message);=null;">{.Windows.Forms.MessageBox.Show(ex.Message, "Ошибка при запросе к базе!");.AddInfo("Error on Query -> " + ex.Message);= null;
}datarows;
}
///
/// Возвращает имена всех созданных в базе данных таблиц.
///
///
///
public static List GetTablesNames(string appPath)
{();
{(SQLiteConnection con = new SQLiteConnection())
{.ConnectionString = @"Data Source=" + appPath + ";New=False;Version=3";query = "SELECT name FROM sqlite_master WHERE type=table ORDER BY name;";
//открыть базу для запросов.Open();
using (SQLiteCommand sqlCommand = con.CreateCommand())
{.CommandText = query;reader = sqlCommand.ExecuteReader();
(IDataRecord record in reader).Add(record["name"].ToString());
}
//закрыть базу.Close();
.AddInfo("Get tables names success -> #" + query + "#");
}
}(Exception ex)
"+ex.Message);=null;">{.Windows.Forms.MessageBox.Show(ex.Message, "Ошибка при запросе к базе!");.AddInfo("Error on Get Tables Names -> " + ex.Message);= null;
}s;
}
}
}
System;System.IO;System.Text.RegularExpressions;
SQLiteSampleProject
{
///
/// Класс, поддерживающий создание и ведение лога текущего запуска.
/// static class Log
{
///
/// Текст лога текущего запуска.
/// static string Data { get; private set; }
///
/// Показывает, был ?/p>