Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Бази даних / lab12

.docx
Скачиваний:
39
Добавлен:
05.03.2016
Размер:
244.28 Кб
Скачать

Лабораторна робота №12

Тема: Розробка програмного забезпечення на платформі С#/.NET для роботи з СУБД MySQL .

Мета: Набути навичок по написанню програм з використанням C#/.NET для роботи з СУБД MySQL при допомозі ODBC.

Хід роботи:

ODBC (Open DataBase Connectivity)– це відкритий інтерфейс доступу до баз даних, являється індустріальним стандарт, і забезпечує повну сумісніть роботи з будь-якими СУБД.

Connector/ODBC або MyODBC - це драйвер MySQL ODBC, який використовується в середовищі .NET для доступу до MySQL через ODBC.NET.

ODBC.NET Data Provider – провайдер даних, що обгорткою навколо ODBC з’єднання Цей провайдер даних визначено в збірці System.Data, яка є складовою частиною .NET, починаючи з версії 1.1.

Схема роботи з СУБД при використанні ODBC.NET Data Provider наведена на рис. 1

Рисунок 1 – Схема роботи СУБД

Щоб скористатися класами ODBC.NET, необхідно встановити MySQL ODBC Driver, який можна скачати з сайту dev.mysql.com

Адміністратор джерел даних ODBC (ODBC Data Source Administrator) в Windows, дозволяє створювати нові DSN(Database Source Name) з’єднання та керувати драйверами і налаштуваннями ODBC системи

Для доступу до цієї програми в Windows XP необхідно зайти в панель керування (Control Panel) -> Адміністрування (Administrative Tools) -> Джерела даних (ODBC) (Data Sources (ODBC)).

Рисунок 2 – Вікно налаштувань ODBC

Для створення нового DSN (що буде доступий для всіх користувачів), виберіть вкладку Системний DSN (System DSN). Для створення DSN для поточного користувача – вкладку користувацький DSN (User DSN). Далі натисніть кнопку Додати (add).

Тепер необхідно налаштувати поля для створюваного DSN (рис 4).

У полі Ім'я джерела даних (Data Source Name) введіть ім'я для доступу до джерела даних. Це може бути будь-яке довільне ім'я.

У полі Опис(Description) введіть текст, опису з'єднання.

У полі Сервер(Server) введіть ім'я хоста MySQL-сервера. За замовчуванням - це локальний комп’ютер (127.0.0.1).

У полі Користувач(User) введіть логін користувача для з'єднання з СУБД.

У полі Пароль(Password) введіть пароль для даного з'єднання.

В полі База даних(Database) повинен автоматично зявитися перелік баз даних, до яких користувач має право доступу.

Рисунок 3 – Налаштування параметрів DSN.

Для виконання лабораторної роботи використано базу даних із попередніх лабораторних робіт. База даних із якою буде працювати програма в даному випадку має наступну структуру див. рисунок 4.

Рисунок 4 – Структура бази даних

Код програми клієнта для доступу до бази даних:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Data.Odbc;

namespace OdbcGUI

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)

{

}

private void radioButton1_CheckedChanged(object sender, EventArgs e)

{

}

private void button1_Click(object sender, EventArgs e)

{

dataGridView1.Rows.Clear();

DBconnect con = new DBconnect();

string qwer;

qwer = "SELECT * FROM cash WHERE id=0";

if (radioButton1.Checked)

{

qwer = "SELECT * FROM cash";

}

if (radioButton2.Checked)

{

qwer = "SELECT * FROM cash ORDER BY sum asc";

}

if (radioButton3.Checked)

{

qwer = "SELECT * FROM cash ORDER BY sum desc";

}

if (radioButton4.Checked)

{

qwer = "SELECT * FROM cash WHERE cat_poz='"+comboBox1.SelectedItem.ToString()+"'";

}

if (radioButton5.Checked)

{

qwer = "SELECT * FROM cash WHERE rahunok='" + comboBox2.SelectedItem.ToString() + "'";

}

OdbcDataReader www = con.query(qwer);

while (www.Read()) {

string id = www.GetString(0);

string data = www.GetString(1);

string rah = www.GetString(2);

string cat = www.GetString(3);

string pod_cat = www.GetString(4);

string sum = www.GetString(7);

string[] row1 = { "" + id + "", "" + rah + "", "" + data + "", "" + cat + "", "" + pod_cat + "", "" + sum + "" };

dataGridView1.Rows.Add(row1);

}

}

private void tabPage1_Click(object sender, EventArgs e)

{

}

private void Form1_Shown(object sender, EventArgs e)

{

try

{

DBconnect con = new DBconnect();

OdbcDataReader www = con.query("SELECT * FROM rahunok");

while (www.Read())

{

string rah = www.GetString(1);

comboBox2.Items.Add(rah);

comboBox3.Items.Add(rah);

comboBox6.Items.Add(rah);

}

www = con.query("SELECT * FROM categ");

while (www.Read())

{

string cat = www.GetString(1);

comboBox1.Items.Add(cat);

comboBox4.Items.Add(cat);

comboBox5.Items.Add(cat);

}

}

catch (Exception ex) {

MessageBox.Show("Помилка запиту", "Бази даних", MessageBoxButtons.OK);

}

}

private void textBox1_TextChanged(object sender, EventArgs e)

{

}

private void button2_Click(object sender, EventArgs e)

{

try

{

if (radioButton6.Checked)

{

string qwer = "INSERT INTO categ (`id`,`cat`,`p_key`) VALUES (NULL,'" + textBox1.Text.ToString() + "',1)";

DBconnect con = new DBconnect();

OdbcCommand MyCom = new OdbcCommand(qwer, con.open());

MyCom.ExecuteNonQuery();

}

if (radioButton7.Checked)

{

string qwer = "INSERT INTO rahunok (`id`,`cat`,`key`) VALUES (NULL,'" + textBox2.Text.ToString() + "',1)";

DBconnect con = new DBconnect();

OdbcCommand MyCom = new OdbcCommand(qwer, con.open());

MyCom.ExecuteNonQuery();

}

if (radioButton8.Checked)

{

string qwer = "INSERT INTO cash (`id`,`data`,`rahunok`,`cat_poz`,`sec_cat_poz`,`kolit`,`izmir`,`sum`) " +

" VALUES (NULL,'" + textBox5.Text.ToString() + "','" + comboBox3.SelectedItem.ToString() + "','" + comboBox4.SelectedItem.ToString() + "','" + textBox6.Text.ToString() + "',1,1,'" + textBox7.Text.ToString() + "')";

DBconnect con = new DBconnect();

OdbcCommand MyCom = new OdbcCommand(qwer, con.open());

MyCom.ExecuteNonQuery();

}

MessageBox.Show("Виконано запит", "Бази даних", MessageBoxButtons.OK);

}

catch (Exception ex) {

MessageBox.Show("Помилка запиту", "Бази даних", MessageBoxButtons.OK);

}

}

private void button3_Click(object sender, EventArgs e)

{

try

{

if (radioButton9.Checked)

{

string qwer = "DELETE FROM cash WHERE id=" + textBox3.Text.ToString() + "";

DBconnect con = new DBconnect();

OdbcCommand MyCom = new OdbcCommand(qwer, con.open());

MyCom.ExecuteNonQuery();

}

if (radioButton10.Checked)

{

string qwer = "UPDATE cash SET "

+ "data='" + textBox10.Text.ToString() + "',"

+ "rahunok='" + comboBox6.SelectedItem.ToString() + "',"

+ "cat_poz='" + comboBox5.SelectedItem.ToString() + "',"

+ "sec_cat_poz='" + textBox9.Text.ToString() + "',"

+ "sum='" + textBox8.Text.ToString() + "' "

+ "WHERE id='" + textBox4.Text.ToString() + "'";

DBconnect con = new DBconnect();

OdbcCommand MyCom = new OdbcCommand(qwer, con.open());

MyCom.ExecuteNonQuery();

MessageBox.Show("Запит виконано", "Бази даних", MessageBoxButtons.OK);

}

} catch(Exception ex) {

MessageBox.Show("Помилка запиту","Бази даних",MessageBoxButtons.OK);

}

}

}

public class DBconnect

{

string myconstring = "DRIVER=MySQL ODBC 5.2 Unicode Driver; SERVER = 127.0.0.1; DATABASE=javtest; UID=javtest; PASSWORD=12345678; OPTION=3;";

public OdbcConnection open()

{

OdbcConnection con = new OdbcConnection(myconstring);

con.Open();

return con;

}

public OdbcDataReader query(string qwer)

{

OdbcCommand MyCom = new OdbcCommand(qwer, open());

OdbcDataReader Mydata;

Mydata = MyCom.ExecuteReader();

return Mydata;

}

Після запуску програми виводиться нове вікно де можна здійснити вибірку із бази за параметрами які там зображено. Також переходячи по закладках компоненту можна вставляти оновляти і видаяти записи..рис.4

Рисунок 4 – Закладка програми «Перегляд».

Закладка Втавити запис зображена на рисунку 5.

Рисунок 5 – Закладка Вставлення запису

Рисунок 6 – Оновленн/Видаленн записів

Висновок: Я набув навичок по написанню програм з використанням C#/.NET для роботи з СУБД MySQL при допомозі ODBC.

Соседние файлы в папке Бази даних