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