СПИСОК ИСПОЛЬЗОВАННЫЫХ ИСТОЧНИКОВ
1. Евсеева, А.Б. Работа с базами данных на языке C#. Технология ADO.NET: Учебное пособие / сост. О. Н. Евсеева, А. Б. Шамшев. –Ульяновск: УлГТУ, 2009. –170 с.
2. ADO.NET: Обзор технологии [Электронный ресурс].–Режим доступа: http://www.cyberguru.ru/dotnet/ado-net/adonet-overview.html, свободный. –(Дата обращения 12.05.2017).
3. ADO. NET [Электронный ресурс] / П. В. Ветров, Тюменский государственный университет. Институт математики и компьютерных наук. – Режим доступа: http://www.codenet.ru/db/other/ado-dot-net/, свободный.–(Дата обращения 12.05.2017).
4. Евсеева, О.Н. ОСНОВЫ ЯЗЫКА C# 2005: Учебное пособие / сост. О. Н. Евсеева, А.Б.Шамшев. –Ульяновск: УлГТУ, 2008. – 132 с.
5.CSharp – Wikipedia [Электронный ресурс]. – Режим доступа: https://ru.wikipedia.org/wiki/C_Sharp, свободный. –(Дата обращения 12.05.2017).
6. Евсеева, О.Н. Отладка и тестирование приложений в среде VisualStudio2005 : учебное пособие / сост. О. Н. Евсеева, А. Б. Шамшев. –Ульяновск :УлГТУ, 2008. – 96 с.
7. Достоинства и недостатки СУБД [Электронный ресурс]. – Режим доступа: http://pivot-table.ru/dostoinstva-i-nedostatki-subd.html, свободный. –(Дата обращения 12.05.2017)..
8. Проектирование баз данных – Wikipedia [Электронный ресурс]. – Режим доступа: https://ru.wikipedia.org/wiki/Проектирование_баз_данных, свободный. –(Дата обращения 12.05.2017).
9.Советов, Б.Я. Базы данных: теория и практика: Учебник для бакалавров / Б.Я. Советов, В.В. Цехановский, В.Д. Чертовской. – М.: Юрайт, 2013. – 463 c.
10.Кириллов, В.В. Введение в реляционные базы данных.Введение в реляционные базы данных / В.В. Кириллов, Г.Ю. Громов. – СПб.: БХВ-Петербург, 2012. – 464 c.
|
|
11.Кузин, А.В. Базы данных: Учебное пособие для студ. высш. учеб. заведений / А.В. Кузин, С.В. Левонисова. – М.: ИЦ Академия, 2012. – 320 c.
12.Р. Фрост Базы данных. Проектирование и разработка / РэймондФрост, Джон Дей, Крейг Ван Слайк. – М.: – НТ Пресс, 2007. – 592с.
13. Пирогов, В.Ю. Информационные системы и базы данных: организация и проектирование: Учебное пособие / В.Ю. Пирогов. – СПб.: БХВ-Петербург, 2009. – 528 c.
14.Д. ШарпMicrosoft Visual C#.Подробное руководство. / Д. Шарп. – СПб.: – Питер, 2017. – 848с.
15.Databasecomparsion – Digitalocean [Электронный ресурс]. – Режим доступа: https://www.digitalocean.com/community/tutorials/sqlite-vs-mysql-vs-postgresql-a-comparison-of-relational-database-management-systems, свободный. – (Дата обращения 12.05.2017).
Приложение А
SQL-запрос на выборку: отображение полной таблицы.
SELECT PassportOPS.idPassportOPS, Pochtamt.[Индекс], Pochtamt.[Наименование почтамта], OPS.[Наименование ОПС], OPS.[Индекс ОПС], OPS.ЕАС, ConnectType.[Вид соединения], TypeOPS.[Наименование типа ОПС], Class.[Класс ОПС], Address.Район, Address.[Населённый пункт], Address.Улица, Address.Дом, OPS.Телефон, InternetCanal.ТелефонИнтернет, TypeCanal.[Наименование типа канала], Speed.Скорость, Operator.[Название оператора], InternetCanal.[IP-адрес], OPS.[Количество окон]
FROM ((((Operator INNER JOIN (((TypeCanal INNER JOINтInternetCanal ON TypeCanal.idTypeCanal = InternetCanal.[Типканала]) INNER JOIN (TypeOPS INNER JOIN ((PassportOPS INNER JOIN Pochtamt ON PassportOPS.Почтамт = Pochtamt.idPochtamt) INNER JOIN OPS ON PassportOPS.ОПС = OPS.idOPS) ON TypeOPS.idTypeOPS = OPS.[ТипОПС]) ON InternetCanal.idInternetCanal = PassportOPS.Интернет) INNER JOIN Speed ON InternetCanal.Скорость = Speed.idSpeed) ON Operator.idOperator = InternetCanal.Оператор) INNER JOIN ConnectType ON InternetCanal.[Видсоединения] = ConnectType.idConnectType) INNER JOIN Class ON OPS.Класс = Class.idClass) INNER JOIN Address ON OPS.Адрес = Address.idAddress)
|
|
Приложение Б
КодформыLoginForm.
using System;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Threading.Tasks;
usingSystem.Windows.Forms;
usingSystem.Data.OleDb;
using System.IO;
namespace WindowsFormsApplication2
{
publicpartialclassLoginForm :Form
{
publicLoginForm()
{
InitializeComponent();
this.AcceptButton = this.button1;this.ActiveControl = this.textBox1;
}
privatevoid linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
InitializeComponent();
textBox1.Text = null;textBox2.Text = null;
Register f = newRegister();
this.Hide(); f.ShowDialog();
}
privatevoid button1_Click(object sender, EventArgs e)
{
stringconnectionstring = Properties.Settings.Default.conSt;
Datasdataform = newDatas();
if (connectionstring == "" || !File.Exists(Properties.Settings.Default.DbFileName))
{
dataform.chooseFile(); return;
}
string login = textBox1.Text; string password = textBox2.Text;
OleDbConnection conn = newOleDbConnection(connectionstring);
conn.Open();
//Поиск пользователя в таблице Users
OleDbCommandcomm = newOleDbCommand("SELECT COUNT(*) FROM `Users` WHERE Login = @login and Password = @password", conn);
comm.Parameters.Add("@login", OleDbType.Char).Value = login;
|
|
comm.Parameters.Add("@password", OleDbType.Char).Value = password;
if ((int)(comm.ExecuteScalar()) == 1)
//Переходкосновномуокну
{this.Hide(); dataform.Show();
textBox1.Text = null; textBox2.Text = null;}
else
{MessageBox.Show("Попробуйтеещёраз", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return; }
conn.Close();
}
}
}
ПриложениеВ
КодформыRegister.
using System;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Data.OleDb;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Threading.Tasks;
usingSystem.Windows.Forms;
using System.IO;
namespace WindowsFormsApplication2
{
publicpartialclassRegister :Form
{
publicRegister()
{
InitializeComponent();
this.ActiveControl = this.textBox1;
this.AcceptButton = this.button1;
}
privatevoid button1_Click(object sender, EventArgs e)
{
stringconnectionstring = Properties.Settings.Default.conSt;
Datasdataform = newDatas();
if (connectionstring == "" || !File.Exists(Properties.Settings.Default.DbFileName))
{
dataform.chooseFile();
return;
}
string login = textBox1.Text;
string password = textBox2.Text;
OleDbConnection conn = newOleDbConnection(connectionstring);
conn.Open();
OleDbCommandcomm = newOleDbCommand("SELECT COUNT(*) FROM `Users` WHERE Login = @login and Password = @password", conn);
comm.Parameters.Add("@login", OleDbType.Char).Value = login;
comm.Parameters.Add("@password", OleDbType.Char).Value = password;
if ((int)(comm.ExecuteScalar()) == 1)
{
MessageBox.Show("Пользовательсуществует", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
//Проверка заполненности формы регистрации
|
|
if (textBox1.Text == String.Empty)
{
MessageBox.Show("Не заполнено поле Логин", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
elseif (textBox2.Text == String.Empty)
{
MessageBox.Show("НезаполненополеПароль", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
//Заполнениетаблицы Users
comm = newOleDbCommand("INSERT INTO `users` VALUES(@1, @2, @3); ", conn);
comm.Parameters.Add("@1", OleDbType.Char).Value = login;
comm.Parameters.Add("@2", OleDbType.Char).Value = password;
comm.Parameters.Add("@3", OleDbType.Boolean).Value = "false";
comm.ExecuteNonQuery();
//ПереходкокнуLoginForm
this.Hide();
LoginFormloginform = newLoginForm();
loginform.Show();
}
privatevoidRegister_FormClosed(object sender, FormClosedEventArgs e)
{
Application.OpenForms[0].Show();
}
}
}
ПриложениеГ
КодформыDatas.
using System;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Data.OleDb;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Threading.Tasks;
usingSystem.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;
using System.IO;
namespace WindowsFormsApplication2
{
publicpartialclassDatas :Form
{
stringzapros = null;
publicDatas()
{
InitializeComponent();
}
privateOleDbConnection conn;
privateOleDbCommandcomm;
publicstringconnectionstring;
publicvoidconnecting()
{
connectionstring = Properties.Settings.Default.conSt;
if (connectionstring == "" || !File.Exists(Properties.Settings.Default.DbFileName))
{
chooseFile();
}
conn = newOleDbConnection(connectionstring);
comm = newOleDbCommand();
}
publicvoidDataTable_Load(object sender, EventArgs e)
{
connecting();
// TODO: данная строка кода позволяет загрузить данные в таблицу "pOCHTADataSet.Class". При необходимости она может быть перемещена или удалена.
// this.classTableAdapter.Fill(this.pOCHTADataSet.Class);
conn.Open();
//Получение списка таблиц БД в combobox
DataTabletbls = conn.GetSchema("Tables", newstring[] { null, null, null, "TABLE" });
foreach (DataRow row intbls.Rows)
{
stringTableName = row["TABLE_NAME"].ToString();
comboBox1.Items.Add(TableName);
}
conn.Close();
//Выделениестроки
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
dataGridView1.DefaultCellStyle.SelectionBackColor = Color.Blue;
}
//ОТОБРАЖЕНИЕВСЕЙТАБЛИЦЫ
publicvoidLoadFullTable_Click(object sender, EventArgs e)
{
ClearDGV();
connecting();
comm.Connection = conn;
conn.Open();
zapros = @"SELECT Pochtamt.[Индекс], Pochtamt.[Наименованиепочтамта], OPS.[НаименованиеОПС], OPS.[ИндексОПС], OPS.[ЕАС], ConnectType.[Видсоединения], TypeOPS.[НаименованиетипаОПС], Class.[КлассОПС], Address.Район, Address.[Населённыйпункт], Address.Улица, Address.Дом, OPS.Телефон, InternetCanal.ТелефонИнтернет, TypeCanal.[Наименованиетипаканала], Speed.Скорость, Operator.[Названиеоператора], InternetCanal.[IP-адрес], OPS.[Количествоокон] FROM ((((Operator INNER JOIN (((TypeCanal INNER JOIN InternetCanal ON TypeCanal.idTypeCanal = InternetCanal.[Типканала]) INNER JOIN (TypeOPS INNER JOIN ((PassportOPS INNER JOIN Pochtamt ON PassportOPS.Почтамт = Pochtamt.idPochtamt) INNER JOIN OPS ON PassportOPS.ОПС = OPS.idOPS) ON TypeOPS.idTypeOPS = OPS.[ТипОПС]) ON InternetCanal.idInternetCanal = PassportOPS.Интернет) INNER JOIN Speed ON InternetCanal.Скорость = Speed.idSpeed) ON Operator.idOperator = InternetCanal.Оператор) INNER JOIN ConnectType ON InternetCanal.[Видсоединения] = ConnectType.idConnectType) INNER JOIN Class ON OPS.Класс = Class.idClass) INNER JOIN Address ON OPS.Адрес = Address.idAddress)";
DataTabletble = getTable(zapros);
dataGridView1.DataSource = tble;
numRows();
conn.Open();
//количество строк и столбцов
dataGridView1.ReadOnly = true;
conn.Close();
}
//Нумерация строк в таблице
publicvoidnumRows()
{
for (inti = 0; i<dataGridView1.Rows.Count; i++)
{
dataGridView1.Rows[i].HeaderCell = newDataGridViewRowHeaderCell();
dataGridView1.Rows[i].HeaderCell.Value = (i + 1) + " ";
}
}
//выборка данных для колонки с выпадающим списком
publicDataGridViewComboBoxColumncreateCBColumn(DataTable source, stringdMember, stringvMember)
{
//Созданиеколонки
DataGridViewComboBoxColumn column = newDataGridViewComboBoxColumn();
//Назначемисточникданных
column.DataSource = source;
//Отображаемоезначение
column.ValueMember = dMember;
//Значение
column.DisplayMember = vMember;
column.MaxDropDownItems = 100;
returncolumn;
}
//Метод для получения таблицы
publicintRowC = 0;
publicintColumnC = 0;
publicDataTablegetTable(stringzapros)
{
connecting();
comm.Connection = conn;
comm.CommandText = zapros;
conn.Open();
//создаемтаблицу
DataTabletble = newDataTable();
OleDbDataReader reader = comm.ExecuteReader();
for (inti = 0; i<reader.FieldCount; i++) //fieldcountколичествостолбцов
{
tble.Columns.Add(reader.GetName(i)); //getnameполучениеименистолбцаcolumns.addдобавлениестолбца
}
object[] newRow; //массив для хранения строк из результата запроса
ColumnC = reader.FieldCount;
RowC = 0;
while (reader.Read())
{
RowC++;
newRow = newobject[reader.FieldCount];
for (inti = 0; i<reader.FieldCount; i++)
{
newRow[i] = reader.GetValue(i);
}
tble.Rows.Add(newRow);
}
numRows();
reader.Dispose();
conn.Close();
returntble;
}
publicvoid button3_Click(object sender, EventArgs e)
}
connecting();
conn.Open();
ClearDGV();
dataGridView1.ReadOnly = true;
zapros = @"SELECT " + comboBox1.SelectedItem + @".* FROM " + comboBox1.SelectedItem;
OleDbDataAdapter dbAdapter1 = newOleDbDataAdapter(zapros, conn);
DataTabledataTable = newDataTable();
dbAdapter1.Fill(dataTable);
dataGridView1.DataSource = dataTable;
conn.Close();
}
publicvoidUpdateBtn_Click(object sender, EventArgs e)
{
DataSetdataSett = newDataSet();
try
{
// dataSett.AcceptChanges();
// this.table1TableAdapter.Update(this.database2DataSet1.Table1);
}
catch
{
MessageBox.Show("lololo");
}
}
//Действиепризакрытииформы
privatevoidDatas_FormClosed(object sender, FormClosedEventArgs e)
{
Formloginform = Application.OpenForms[0];
loginform.Show();
}
//МЕНЮToolStripMenu
privatevoidвыходToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Close();
Formloginform = Application.OpenForms[0];
loginform.Close();
}
privatevoidоПрограммеToolStripMenuItem_Click(object sender, EventArgs e)
{
MessageBox.Show("Разработчик: КрыжевичПавел (c) 2017", "Информация", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
privatevoidвернутьсяКАвторизацииToolStripMenuItem_Click(object sender, EventArgs e)
{
Formloginform = Application.OpenForms[0];
loginform.Show();
this.Close();
}
privatevoidэкспортТаблицыВExcelToolStripMenuItem_Click(object sender, EventArgs e)
{
saveFileDialog1.InitialDirectory = "C:\\tmp";
saveFileDialog1.Filter = "All files (*.*)|*.*|Microsoft Office Excel *.xlsx|*.xlsx";
saveFileDialog1.FilterIndex = 2;
saveFileDialog1.AddExtension = true;
saveFileDialog1.ShowDialog();
}
//Проверка возможности редактирования таблицы
privatevoid checkBox1_CheckedChanged(object sender, EventArgs e)
{
if (checkBox1.Checked == true)
{
this.dataGridView1.ReadOnly = false;
}
else
{
this.dataGridView1.ReadOnly = true;
}
}
//СОРТИРОВКА
staticboolIsNum(string s)
{
foreach (char c in s)
{
if(!Char.IsDigit(c)) returnfalse;
}
returntrue;
}
publicvoidSort()
{
stringTableColumnName = null;
stringSortTextis = null;
if (IsNum(SortText.Text) == true)
{
SortTextis = SortText.Text;
}
else
{
SortTextis = "'" + SortText.Text + "'";
}
connecting();
conn.Open();
// ВыбортаблицыизCombobox
intSortIndex = 1000;
SortIndex = SortBox.SelectedIndex;
switch (SortIndex)
{
case 0:
TableColumnName = @"Pochtamt.[Наименованиепочтамта]";
break;
case 1:
TableColumnName = @"OPS.[НаименованиеОПС]";
break;
case 2:
TableColumnName = @"OPS.[ИндексОПС]";
break;
case 3:
TableColumnName = @"OPS.ЕАС";
//УсловиедляЕАС
if (EACcheck.Checked)
{
SortTextis = "-1";
}
else
{
SortTextis = "0";
}
break;
case 4:
TableColumnName = @"ConnectType.[Видсоединения]";
break;
case 5:
TableColumnName = @"TypeOPS.[НаименованиетипаОПС]";
break;
case 6:
TableColumnName = @"Class.[КлассОПС]";
break;
case 7:
TableColumnName = @"Address.[Населённыйпункт]";
break;
case 8:
TableColumnName = @"TypeCanal.[Наименованиетипаканала]";
break;
case 9:
TableColumnName = @"Operator.[Названиеоператора]";
break;
}
comm.Connection = conn;
if (TableColumnName == "" || SortTextis == "")
{
TableColumnName = "";
SortTextis = "";
MessageBox.Show("Незаполненоусловиепоиска", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
try
{
zapros = "SELECT distinct Pochtamt.Индекс, Pochtamt.[Наименованиепочтамта], OPS.[НаименованиеОПС], OPS.[ИндексОПС], TypeOPS.[НаименованиетипаОПС], Class.[КлассОПС], Address.[Населённыйпункт], Address.Улица, Address.Дом, OPS.Телефон, OPS.ЕАС, OPS.[Количествоокон], TypeCanal.[Наименованиетипаканала], Operator.[Названиеоператора], Speed.Скорость, InternetCanal.ТелефонИнтернет, InternetCanal.[IP-адрес], ConnectType.[Видсоединения] FROM (((((((Class INNER JOIN (Address INNER JOIN OPS ON Address.idAddress = OPS.Адрес) ON Class.idClass = OPS.Класс) INNER JOIN PassportOPS ON OPS.idOPS = PassportOPS.ОПС) INNER JOIN ((InternetCanal INNER JOIN ConnectType ON InternetCanal.[Видсоединения] = ConnectType.idConnectType) INNER JOIN Operator ON InternetCanal.Оператор = Operator.idOperator) ON PassportOPS.Интернет = InternetCanal.idInternetCanal) INNER JOIN Pochtamt ON PassportOPS.Почтамт = Pochtamt.idPochtamt) INNER JOIN Speed ON InternetCanal.Скорость = Speed.idSpeed) INNER JOIN TypeCanal ON InternetCanal.[Типканала] = TypeCanal.idTypeCanal) INNER JOIN TypeOPS ON OPS.[ТипОПС] = TypeOPS.idTypeOPS) WHERE " + TableColumnName + " = " + SortTextis;
}
catch (OleDbException)
{
MessageBox.Show("ERROR", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
conn.Close();
//создаемтаблицу
DataTabletble = getTable(zapros);
dataGridView1.DataSource = tble;
conn.Close();
}
//Кнопкасортировки, запросынавыборку
publicvoid button2_Click(object sender, EventArgs e)
{
ClearDGV();
Sort();
dataGridView1.ReadOnly = true
numRows();
}
//Заменаформысортировки
publicvoidSortBox_SelectedIndexChanged(object sender, EventArgs e)
{
intSelIndex = this.SortBox.SelectedIndex;
if (SelIndex == 3)
{
SortText.Visible = false;
EACcheck.Visible = true;
}
else
{
SortText.Visible = true;
EACcheck.Visible = false;
}
}
//Очисткатаблицы
publicvoidClearDGV()
{
dataGridView1.SelectAll();
dataGridView1.ClearSelection();
dataGridView1.Columns.Clear();
dataGridView1.DataSource = null;
}
//Методэкспортав EXCEL
publicvoidExportToExcel()
{
//Подключениек Excel
Microsoft.Office.Interop.Excel.ApplicationexcelApp = newMicrosoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.WorkbookObjWorkBook;
Microsoft.Office.Interop.Excel.WorksheetObjWorkSheet;
//Созданиеновойкниги Excel
ObjWorkBook = excelApp.Workbooks.Add(System.Reflection.Missing.Value);
//Созданиеновойтаблицы Excel
ObjWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)ObjWorkBook.Sheets[1];
excelApp.Workbooks.Add();
Microsoft.Office.Interop.Excel.WorksheetworkSheet = (Microsoft.Office.Interop.Excel.Worksheet)excelApp.ActiveSheet;
conn.Open();
numRows();
DataTabletble = getTable(zapros);
//Считываниетаблицы
for (inti = 0; i<ColumnC; i++)
{
workSheet.Cells[1, i + 1] = dataGridView1.Columns[i].HeaderText;
}
for (inti = 0; i< dataGridView1.ColumnCount; i++)
{
for (int j = 0; j <RowC; j++)
{
workSheet.Cells[j + 2, i + 1] = dataGridView1[i, j].Value.ToString();
}
}
//Сохранениекниги Excel
stringpathToFile;
pathToFile = saveFileDialog1.FileName;
workSheet.SaveAs(pathToFile);
excelApp.Application.Quit();
}
privatevoid saveFileDialog1_FileOk(object sender, CancelEventArgs e)
{
try{ ExportToExcel(); }
catch{ MessageBox.Show("Невозможноэкспортироватьданнуютаблицу."); return; }
}
privatevoid openFileDialog1_FileOk(object sender, CancelEventArgs e)
{
MessageBox.Show("Файлвыбран!", "Уведомление", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
//ВыборпутикфайлуБД
publicvoidchooseFile()
{
if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
FileInfo fi = newFileInfo(openFileDialog1.FileName);
Properties.Settings.Default.conSt = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + openFileDialog1.FileName;
Properties.Settings.Default.DbFileName = openFileDialog1.FileName;
connectionstring = Properties.Settings.Default.conSt;
Properties.Settings.Default.Save();
}
}
publicvoidвыбратьФайлБДToolStripMenuItem_Click(object sender, EventArgs e)
{
chooseFile();
return;
}
}
}
Дата добавления: 2018-06-27; просмотров: 233; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!