Файл: Факультет автоматики и вычислительной техники кафедра вычислительной техники.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 03.02.2024
Просмотров: 210
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИФЕДЕРАЛЬНОЕ государственное БЮДЖЕТНОЕобразовательное учреждениевысшего образования«НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»__________________________________________________________________ФАКУЛЬТЕТ АВТОМАТИКИ И ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИКАФЕДРА ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИЛабораторная работа №1-2по дисциплине «Информационные системы»Факультет: АВТФГруппа: АВТ-018Выполнил: Мартай-оол А.А. Преподаватель: Дубков И.С.Цель работыСоздать проект, в котором будет использована библиотека Ngpsql. В проекте должны быть кнопки, текстовые поля и один label. С помощью библиотеки соединить между сервером pgAdmin и проектом. Вывести таблицу.Ход работыРис. 1 – Form1.Создали 4 кнопки, 5 текстовых полей и один label:
При нажатий кнопки «выполнить команду», открывается другая форма. При успешном соединений выведет таблица. Иначе выведет ошибку.
Для выведения таблицы используется созданная ранее функция в pgAdmin “car_select”. Сама функция создана так:Create or replace Function car_select() returns table ( s_id integer, s_name character varying, s_year integer, s_price integer, s_mileage integer) as $$begin return query select id, name, year, price, mileage from car_info order by id;end $$language plpgsql;Рис. 2 – Form2.Как видим, соединение прошла успешно. Таблица выведена на dataGridView.ПриложениеForm1using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;using Npgsql;namespace LR{public partial class Form1 : Form{private string connstring = String.Format(“Server={0};Port={1};” + “Username={2};Password={3};Database={4};”,“localhost”, 5432, “postgres”, “postgres”, “Cars”);private NpgsqlConnection conn;public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){conn = new NpgsqlConnection(connstring);}private void button1_Click(object sender, EventArgs e){if ((textBox1.Text == “localhost”) && (textBox2.Text == “5432”) && (textBox3.Text == “postgres”) && (textBox4.Text == “postgres”) && (textBox5.Text == “Cars”)){MessageBox.Show(«Инициализация соединения прошла успешна»);button2.Enabled = true;textBox1.Enabled = false;textBox2.Enabled = false;textBox3.Enabled = false;textBox4.Enabled = false;textBox5.Enabled = false;}else MessageBox.Show(«Инициализация соединения не прошла»);}private void button2_Click(object sender, EventArgs e){conn.Open();label5.Text = «Соединения открыто»;button3.Enabled = true;button4.Enabled = true;button2.Enabled = false;}private void button3_Click(object sender, EventArgs e){conn.Close();label5.Text = «Соединения закрыто»;button2.Enabled = true;button4.Enabled = false;button3.Enabled = false;}private void button4_Click(object sender, EventArgs e){Form2 form = new Form2();form.Show();}}}Form2using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;
using System.Text;using System.Windows.Forms;using Npgsql;namespace LR{public partial class Form2 : Form{private string connstring = String.Format("Server={0};Port={1};" + "Username={2};Password={3};Database={4};","localhost", 5432, "postgres", "postgres", "Cars");private NpgsqlConnection conn;private string sql;private NpgsqlCommand cmd;private DataTable dt;private int rowIndex = -1;public Form2(){InitializeComponent();}private void Form2_Load(object sender, EventArgs e){conn = new NpgsqlConnection(connstring);Select();}private void Select(){try{if (conn.State != ConnectionState.Open) conn.Open();sql = @"SELECT * FROM car_select();";cmd = new NpgsqlCommand(sql, conn);dt = new DataTable();dt.Load(cmd.ExecuteReader());conn.Close();dataGridView1.DataSource = null;dataGridView1.DataSource = dt;}catch (Exception ex){conn.Close();MessageBox.Show("Error: "+ex.Message);}}private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e){if (e.RowIndex >= 0){rowIndex = e.RowIndex;textBox1.Text = dataGridView1.Rows[e.RowIndex].Cells["s_name"].Value.ToString();textBox2.Text = dataGridView1.Rows[e.RowIndex].Cells["s_year"].Value.ToString();textBox3.Text = dataGridView1.Rows[e.RowIndex].Cells["s_price"].Value.ToString();textBox4.Text = dataGridView1.Rows[e.RowIndex].Cells["s_mileage"].Value.ToString();}}private void button1_Click(object sender, EventArgs e){rowIndex = -1;textBox1.Enabled = textBox2.Enabled = textBox3.Enabled = textBox4.Enabled = true;textBox1.Text = textBox2.Text = textBox3.Text = textBox4.Text = null;textBox1.Select();}private void button2_Click(object sender, EventArgs e){if (rowIndex < 0){MessageBox.Show("Please choose student to update");return;}textBox1.Enabled = textBox2.Enabled = textBox3.Enabled = textBox4.Enabled = true;}private void button3_Click(object sender, EventArgs e){if (rowIndex < 0){MessageBox.Show("Please choose student to delete");return;}try{if (conn.State != ConnectionState.Open) conn.Open();sql = @"Select * from car_delete(:_id)";cmd = new NpgsqlCommand(sql, conn);cmd.Parameters.AddWithValue("_id", int.Parse(dataGridView1.Rows[rowIndex].Cells["s_id"].Value.ToString()));if ((int)cmd.ExecuteScalar() == 1){MessageBox.Show("Delete student succeccfully");rowIndex = -1;Select();}conn.Close();}catch (Exception ex){conn.Close();MessageBox.Show("Delete fail. Error: "+ex.Message);}}private void button5_Click(object sender, EventArgs e){int result = 0;if (rowIndex < 0){try{if (conn.State != ConnectionState.Open) conn.Open();sql = @"Select * from car_insert(:_name, :_year, :_price, :_mileage)";cmd = new NpgsqlCommand(sql, conn);cmd.Parameters.AddWithValue("_name", textBox1.Text);cmd.Parameters.AddWithValue("_year", int.Parse(textBox2.Text));cmd.Parameters.AddWithValue("_price", int.Parse(textBox3.Text));cmd.Parameters.AddWithValue("_mileage", int.Parse(textBox4.Text));result = (int)cmd.ExecuteScalar();conn.Close();if (result == 1){MessageBox.Show("Inserted successfully");Select();}else{MessageBox.Show("Inserted fail");}}catch (Exception ex){conn.Close();MessageBox.Show("Inserted fail. Error: " + ex.Message);}}else{try{if (conn.State != ConnectionState.Open) conn.Open();sql = @"Select * from car_update(:_id, :_name, :_year, :_price, :_mileage)";cmd = new NpgsqlCommand(sql, conn);cmd.Parameters.AddWithValue("_id", int.Parse(dataGridView1.Rows[rowIndex].Cells["s_id"].Value.ToString()));cmd.Parameters.AddWithValue("_name", textBox1.Text);
cmd.Parameters.AddWithValue("_year", int.Parse(textBox2.Text));cmd.Parameters.AddWithValue("_price", int.Parse(textBox3.Text));cmd.Parameters.AddWithValue("_mileage", int.Parse(textBox4.Text));result = (int)cmd.ExecuteScalar();conn.Close();if (result == 1){MessageBox.Show("Updated successfully");Select();}else{MessageBox.Show("Updated fail");}}catch (Exception ex){conn.Close();MessageBox.Show("Updated fail. Error: " + ex.Message);}}result = 0;textBox1.Text = textBox2.Text = textBox3.Text = textBox4.Text = null;textBox1.Enabled = textBox2.Enabled = textBox3.Enabled = textBox4.Enabled = false;}}}
Новосибирск
2022
-
1 кнопка для инициализации соединения; -
2 - 3 кнопка для открытия и закрытия соединения; -
4 кнопка для выполнения команды, выведение таблицы. -
текстовые поля служат для введения названия сервера, порта, названия пользователя, пароль, название базы данных; -
label – служит для показа состояния соединения.
| Код подключения библиотеки |
| using Npgsql; ... private string connstring = String.Format("Server={0};Port={1};" + "Username={2};Password={3};Database={4};", "localhost", 5432, "postgres", "postgres", "Cars"); private NpgsqlConnection conn; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { conn = new NpgsqlConnection(connstring); } |
| Код создания Form1 |
| private void button1_Click(object sender, EventArgs e) { if ((textBox1.Text == "localhost") && (textBox2.Text == "5432") && (textBox3.Text == "postgres") && (textBox4.Text == "postgres") && (textBox5.Text == "Cars")) { MessageBox.Show("Инициализация соединения прошла успешна"); button2.Enabled = true; textBox1.Enabled = false; textBox2.Enabled = false; textBox3.Enabled = false; textBox4.Enabled = false; textBox5.Enabled = false; } else MessageBox.Show("Инициализация соединения не прошла"); } private void button2_Click(object sender, EventArgs e) { conn.Open(); label5.Text = "Соединения открыто"; button3.Enabled = true; button4.Enabled = true; button2.Enabled = false; } private void button3_Click(object sender, EventArgs e) { conn.Close(); label5.Text = "Соединения закрыто"; button2.Enabled = true; button4.Enabled = false; button3.Enabled = false; } private void button4_Click(object sender, EventArgs e) { Form2 form = new Form2(); form.Show(); } |
При нажатий кнопки «выполнить команду», открывается другая форма. При успешном соединений выведет таблица. Иначе выведет ошибку.
| Код для выведения таблицы |
| private void Form2_Load(object sender, EventArgs e) { conn = new NpgsqlConnection(connstring); Select(); } private void Select() { try { if (conn.State != ConnectionState.Open) conn.Open(); sql = @"SELECT * FROM car_select();"; cmd = new NpgsqlCommand(sql, conn); dt = new DataTable(); dt.Load(cmd.ExecuteReader()); conn.Close(); dataGridView1.DataSource = null; dataGridView1.DataSource = dt; } catch (Exception ex) { conn.Close(); MessageBox.Show("Error: "+ex.Message); } } |
using System.Text;using System.Windows.Forms;using Npgsql;namespace LR{public partial class Form2 : Form{private string connstring = String.Format("Server={0};Port={1};" + "Username={2};Password={3};Database={4};","localhost", 5432, "postgres", "postgres", "Cars");private NpgsqlConnection conn;private string sql;private NpgsqlCommand cmd;private DataTable dt;private int rowIndex = -1;public Form2(){InitializeComponent();}private void Form2_Load(object sender, EventArgs e){conn = new NpgsqlConnection(connstring);Select();}private void Select(){try{if (conn.State != ConnectionState.Open) conn.Open();sql = @"SELECT * FROM car_select();";cmd = new NpgsqlCommand(sql, conn);dt = new DataTable();dt.Load(cmd.ExecuteReader());conn.Close();dataGridView1.DataSource = null;dataGridView1.DataSource = dt;}catch (Exception ex){conn.Close();MessageBox.Show("Error: "+ex.Message);}}private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e){if (e.RowIndex >= 0){rowIndex = e.RowIndex;textBox1.Text = dataGridView1.Rows[e.RowIndex].Cells["s_name"].Value.ToString();textBox2.Text = dataGridView1.Rows[e.RowIndex].Cells["s_year"].Value.ToString();textBox3.Text = dataGridView1.Rows[e.RowIndex].Cells["s_price"].Value.ToString();textBox4.Text = dataGridView1.Rows[e.RowIndex].Cells["s_mileage"].Value.ToString();}}private void button1_Click(object sender, EventArgs e){rowIndex = -1;textBox1.Enabled = textBox2.Enabled = textBox3.Enabled = textBox4.Enabled = true;textBox1.Text = textBox2.Text = textBox3.Text = textBox4.Text = null;textBox1.Select();}private void button2_Click(object sender, EventArgs e){if (rowIndex < 0){MessageBox.Show("Please choose student to update");return;}textBox1.Enabled = textBox2.Enabled = textBox3.Enabled = textBox4.Enabled = true;}private void button3_Click(object sender, EventArgs e){if (rowIndex < 0){MessageBox.Show("Please choose student to delete");return;}try{if (conn.State != ConnectionState.Open) conn.Open();sql = @"Select * from car_delete(:_id)";cmd = new NpgsqlCommand(sql, conn);cmd.Parameters.AddWithValue("_id", int.Parse(dataGridView1.Rows[rowIndex].Cells["s_id"].Value.ToString()));if ((int)cmd.ExecuteScalar() == 1){MessageBox.Show("Delete student succeccfully");rowIndex = -1;Select();}conn.Close();}catch (Exception ex){conn.Close();MessageBox.Show("Delete fail. Error: "+ex.Message);}}private void button5_Click(object sender, EventArgs e){int result = 0;if (rowIndex < 0){try{if (conn.State != ConnectionState.Open) conn.Open();sql = @"Select * from car_insert(:_name, :_year, :_price, :_mileage)";cmd = new NpgsqlCommand(sql, conn);cmd.Parameters.AddWithValue("_name", textBox1.Text);cmd.Parameters.AddWithValue("_year", int.Parse(textBox2.Text));cmd.Parameters.AddWithValue("_price", int.Parse(textBox3.Text));cmd.Parameters.AddWithValue("_mileage", int.Parse(textBox4.Text));result = (int)cmd.ExecuteScalar();conn.Close();if (result == 1){MessageBox.Show("Inserted successfully");Select();}else{MessageBox.Show("Inserted fail");}}catch (Exception ex){conn.Close();MessageBox.Show("Inserted fail. Error: " + ex.Message);}}else{try{if (conn.State != ConnectionState.Open) conn.Open();sql = @"Select * from car_update(:_id, :_name, :_year, :_price, :_mileage)";cmd = new NpgsqlCommand(sql, conn);cmd.Parameters.AddWithValue("_id", int.Parse(dataGridView1.Rows[rowIndex].Cells["s_id"].Value.ToString()));cmd.Parameters.AddWithValue("_name", textBox1.Text);
cmd.Parameters.AddWithValue("_year", int.Parse(textBox2.Text));cmd.Parameters.AddWithValue("_price", int.Parse(textBox3.Text));cmd.Parameters.AddWithValue("_mileage", int.Parse(textBox4.Text));result = (int)cmd.ExecuteScalar();conn.Close();if (result == 1){MessageBox.Show("Updated successfully");Select();}else{MessageBox.Show("Updated fail");}}catch (Exception ex){conn.Close();MessageBox.Show("Updated fail. Error: " + ex.Message);}}result = 0;textBox1.Text = textBox2.Text = textBox3.Text = textBox4.Text = null;textBox1.Enabled = textBox2.Enabled = textBox3.Enabled = textBox4.Enabled = false;}}}
Новосибирск
2022