
- •Розробка та вивчення додатку для роботи з базами даних (роз‘єднане середовище)
- •Постановка задачи
- •Письменный отчет по лабораторной работе должен содержать:
- •Обработчики событий
- •Внешний вид проекта
- •Исходный код проекта
- •Класс формы с обработчиками событий:
- •Диаграммы классов и бд Диаграмма классов проекта:
- •Диаграмма бд:
- •Поля и методы классов
- •Исследование программной реализации
Класс формы с обработчиками событий:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// initial dataGridView for output
Gridder gr = Gridder.getInstance();
gr.DataGrid = dGV;
// combobox initialization
ComboBox[] cbArr = new ComboBox[] {comboBox1, comboBox2, comboBox3, comboBox4};
String[,] arr = gr.queryAndShow("SELECT name FROM sysobjects WHERE xtype='U' AND name <> 'sysdiagrams';", true);
foreach (var combo in cbArr)
{
foreach (var cur in arr)
{
combo.Items.Add(cur);
}
if (arr.Length > 0)
{
// select the first element
combo.SelectedIndex = 0;
}
}
// Settings information
textBox7.Text = Settings.Default.Server;
textBox8.Text = Settings.Default.Database;
textBox9.Text = Settings.Default.Login;
textBox10.Text = Settings.Default.Password;
}
// SELECT
private void button_select_query_Click(object sender, EventArgs e)
{
Gridder gr = Gridder.getInstance();
String fields = "";
String table = comboBox1.SelectedItem.ToString();
String where = textBox2.Text;
String orderBy = textBox1.Text;
// get all fields
foreach (var item in listBox1.SelectedItems)
{
fields += item + ",";
}
if (fields == "")
{
MessageBox.Show("Choose at least one field");
return;
}
// remove the last comma
fields = fields.Remove(fields.Length - 1, 1);
String query = "SELECT " + fields +
" FROM " + table +
(where.Length>0 ? " WHERE " + where : "") +
(orderBy.Length > 0 ? " ORDER BY " + orderBy : "");
toolStripStatusLabel1.Text = query;
// query
gr.queryAndShow(query, false);
}
// SELECT
private void comboBox_select_query_SelectedIndexChanged(object sender, EventArgs e)
{
// get table name
String table = ((ComboBox)sender).SelectedItem.ToString();
Gridder gr = Gridder.getInstance();
String[,] arr = gr.queryAndShow("SELECT [name] AS [Column Name] " +
"FROM syscolumns " +
"WHERE id = (SELECT id FROM sysobjects WHERE type = 'U' AND [Name] = '" + table + "')", true);
// clear all old items
listBox1.Items.Clear();
foreach (var item in arr)
{
listBox1.Items.Add(item);
}
listBox1.SelectedIndices.Clear();
// select all
for (int i = 0; i < listBox1.Items.Count; i++)
{
listBox1.SelectedIndices.Add(i);
}
}
// INSERT
private void comboBox_insert_query_SelectedIndexChanged(object sender, EventArgs e)
{
// get table name
String table = ((ComboBox)sender).SelectedItem.ToString();
Gridder gr = Gridder.getInstance();
String[,] arr = gr.queryAndShow("SELECT [name] AS [Column Name] " +
"FROM syscolumns " +
"WHERE id = (SELECT id FROM sysobjects WHERE type = 'U' AND [Name] = '" + table + "')", true);
dataGridView2.ColumnCount = arr.Length - 1;
int i = 0;
// fill all column names
foreach (var item in arr)
{
if (item == "Id") continue; // don't paste id, 'cause it's a PK
dataGridView2.Columns[i].HeaderText = item;
i++;
}
// Autosize dataGridView
for (int km = 0; km < dataGridView2.Columns.Count; km++)
{
dataGridView2.Columns[km].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
}
}
// Clear dataGridView. INSERT
private void button_clear_datagrid_Click(object sender, EventArgs e)
{
dataGridView2.Rows.Clear();
}
private void button_connect_Click(object sender, EventArgs e)
{
// gather info
string server = textBox7.Text;
string database = textBox8.Text;
string login = textBox9.Text;
string passwd = textBox10.Text;
Gridder gr = Gridder.getInstance();
// check
String[,] arr = gr.queryAndShow("SELECT name FROM sysobjects WHERE xtype='U' AND name <> 'sysdiagrams';", true);
if (arr != null)
{
// Save settings
Settings.Default.Server = server;
Settings.Default.Database = database;
Settings.Default.Login = login;
Settings.Default.Password = passwd;
Settings.Default.Save();
MessageBox.Show("Successfully connected");
}
}
// INSERT
private void button_insert_query_Click(object sender, EventArgs e)
{
string values = "";
// form values
for (int i = 0; i < dataGridView2.Rows.Count - 1; i++)
{
values += "(";
for (int j = 0; j < dataGridView2.Rows[i].Cells.Count; j++)
{
values += "'" + (dataGridView2.Rows[i].Cells[j].Value) + "',";
}
if (values.Length > 0)
values = values.Remove(values.Length - 1, 1);
values += "),";
}
// form fields
if (values.Length > 0)
{
string fields = "(";
for (int i = 0; i < dataGridView2.Columns.Count; i++)
{
fields += dataGridView2.Columns[i].HeaderText + ",";
}
fields = fields.Remove(fields.Length - 1, 1);
fields += ")";
values = values.Remove(values.Length - 1, 1);
// query
string query = "INSERT INTO " + comboBox2.SelectedItem.ToString() + " " + fields + " VALUES " + values;
toolStripStatusLabel1.Text = query;
Gridder gr = Gridder.getInstance();
gr.queryAndShow(query, true, false);
}
else
{
MessageBox.Show("There is no any data to enter");
}
}
// UPDATE
private void button_update_query_Click(object sender, EventArgs e)
{
string query = "UPDATE " + comboBox3.SelectedItem.ToString() + " SET " + textBox3.Text + " = '" + textBox4.Text + "' WHERE " + textBox5.Text;
toolStripStatusLabel1.Text = query;
Gridder gr = Gridder.getInstance();
gr.queryAndShow(query, true, false);
}
// DELETE
private void button_delete_query_Click(object sender, EventArgs e)
{
string query = "DELETE FROM " + comboBox4.SelectedItem.ToString() + " WHERE " + textBox6.Text;
toolStripStatusLabel1.Text = query;
Gridder gr = Gridder.getInstance();
gr.queryAndShow(query, true, false);
}
// Count 1
private void button4_Click(object sender, EventArgs e)
{
string query = "SELECT COUNT(Id) FROM dbo.Question";
toolStripStatusLabel1.Text = query;
Gridder gr = Gridder.getInstance();
int a, b;
// query
String [,] ans = gr.queryAndShow(query, true, true);
// get a number
string num1 = ans[0, 0];
query = "SELECT COUNT(Id) FROM dbo.Account";
toolStripStatusLabel1.Text = query;
// query
ans = gr.queryAndShow(query, true, true);
// get a number
string num2 = ans[0, 0];
// parse and check
if (Int32.TryParse(num1, out a) && Int32.TryParse(num2, out b))
{
// print the result
label14.Text = (Convert.ToDouble(a) / Convert.ToDouble(b)).ToString();
}
else
{
label14.Text = "Some errors occured...";
}
}
// Count 2
private void button5_Click(object sender, EventArgs e)
{
string query = "SELECT Id FROM dbo.[Type] t WHERE t.Name = 'Student'";
toolStripStatusLabel1.Text = query;
Gridder gr = Gridder.getInstance();
int a, b;
// query
String[,] ans = gr.queryAndShow(query, true, true);
// get a number
string num1 = ans[0, 0];
// parse
if (Int32.TryParse(num1, out a))
{
query = "SELECT COUNT(*) FROM dbo.[Session] s JOIN dbo.Account a ON s.Id_Account = a.Id WHERE a.Account_Type = " + a;
toolStripStatusLabel1.Text = query;
// query
ans = gr.queryAndShow(query, true, true);
// get a number
string num2 = ans[0, 0];
// parse
if (Int32.TryParse(num2, out b))
{
// print the result
label15.Text = (Convert.ToInt32(b)).ToString();
return;
}
}
label15.Text = "Some errors occured...";
}
// Count 3
private void button6_Click(object sender, EventArgs e)
{
string query = "SELECT q.Answers FROM dbo.Question q";
toolStripStatusLabel1.Text = query;
Gridder gr = Gridder.getInstance();
// query
String[,] ans = gr.queryAndShow(query, true, true);
int maxLength = 0;
for (int i = 0; i < ans.Length; i++)
{
// find the max
maxLength = Math.Max(ans[i,0].Length, maxLength);
}
// print the result
label17.Text = maxLength.ToString();
}
}