close

Вход

Забыли?

вход по аккаунту

?

ЛАБОРАТОРНАЯ РАБОТА#3c#

код для вставкиСкачать
ЛАБОРАТОРНАЯ РАБОТА № 3
ADO.NET
3.1 Цель работы
Изучить возможности доступа к базам данных, используя технологию
ADO.NET, получить практические навыки по работе с классами ADO.NET.
3.2 Теоретические сведенья
3.2.1 Общие сведения об ADO.NET
ADO.NET (ActiveX Data Object .NET) – набор классов, используемый
для доступа к источникам данных в платформе .NET. ADO.NET
поддерживает асинхронный доступ к данным и сериализацию данных,
получаемых из хранилища, в формате XML.
ADO.NET не предлагает единого набора типов для связи со всеми
СУБД. В пространстве имен System.Data.Common находятся базовые классы
и интерфейсы, а соответствующие производные типы для разных
поставщиков данных – в одноименных пространствах System.Data.SqlClient,
System.Data.Odbc и т.п.
И хотя имена этих реализующих типов разные, можно создать весьма
универсальный программный код, благодаря использованию полиморфизма
и специального объекта класса DbProviderFactory, с помощью которого
извлекаются объекты данных, специфичные для каждого поставщика.
Библиотеки ADO.NET могут использоваться в рамках двух
концептуально различных способах взаимодействия: на связном уровне, для
чего используются классы подсоединенных объектов или несвязном уровне,
где нужны классы отсоединенных объектов (рис. 3.1).
Рисунок 3.1 – Организация классов ADO.NET
При
использовании
связного
уровня
программный
код
непосредственно соединяется с соответствующим хранилищем данных, и
отсоединяется от него, когда задачи взаимодействия решены. Несвязный
уровень, напротив, позволяет получить набор объектов, функционирующих
как клиентские копии внешних данных.
3.3 Текст программы
Form1.cs
using
using
using
using
using
using
using
using
using
System;
System.Collections.Generic;
System.ComponentModel;
System.Data;
System.Drawing;
System.Linq;
System.Text;
System.Windows.Forms;
Npgsql;
namespace lab3
{
public partial class Form1 : Form
{
//Ссылка на подключение
private NpgsqlConnection connection = null;
//Ссылка на DataSet
private DataSet dataSet = null;
//Ссылки на DataAdapter для группы и студента
private NpgsqlDataAdapter prodDataAdapter = null;
private NpgsqlDataAdapter tovarDataAdapter = null;
//Ссылки на вспомогательные формы
private Form2 form2 = null;
private Form3 form3 = null;
private Form4 form4 = null;
public void setConnection(NpgsqlConnection connection)
{
this.connection = connection;
}
//Создание DataSet
private DataSet getDataSet()
{
if (dataSet == null)
{
dataSet = new DataSet();
dataSet.Tables.Add("Prodavec");
dataSet.Tables.Add("Tovar");
}
return dataSet;
}
//Получить форму установления соединения
public Form2 getForm2()
{
if (form2 == null)
{
form2 = new Form2();
form2.setPerent(this);
}
return form2;
}
//Установить соединение с базой
public NpgsqlConnection Connect(string host, int port, string
database,
string user, string parol)
{
NpgsqlConnectionStringBuilder stringBuilder =
new NpgsqlConnectionStringBuilder();
stringBuilder.Host = host;
stringBuilder.Port = port;
stringBuilder.UserName = user;
stringBuilder.Password = parol;
stringBuilder.Database = database;
stringBuilder.Timeout = 30;
NpgsqlConnection connection =
new NpgsqlConnection(stringBuilder.ConnectionString);
connection.Open();
return connection;
}
//Заполнить DataGridView1 студентами
public void FillDataGridView1ByProdavec()
{
getDataSet().Tables["Prodavec"].Clear();
prodDataAdapter = new NpgsqlDataAdapter(
"SELECT * FROM Prodavec", connection);
new NpgsqlCommandBuilder(prodDataAdapter);
prodDataAdapter.Fill(getDataSet(), "Prodavec");
dataGridView1.DataSource = getDataSet().Tables["Prodavec"];
}
//Заполнить DataGridView2 студентами заданной группы
public void FillDataGridView2ByTovar(string name)
{
getDataSet().Tables["Tovar"].Clear();
tovarDataAdapter = new NpgsqlDataAdapter(
"SELECT Tovar.id, name, price, ves, prodavecid " +
"FROM Prodavec, Tovar " +
"WHERE Prodavec.id = Tovar.prodavecid AND nameprod = '" + name +
"'", connection);
new NpgsqlCommandBuilder(tovarDataAdapter);
tovarDataAdapter.Fill(dataSet, "Tovar");
dataGridView2.DataSource = getDataSet().Tables["Tovar"];
}
//Получить форму добавления и замены группы
public Form3 getForm3()
{
if (form3 == null)
{
form3 = new Form3();
form3.setPerent(this);
}
return form3;
}
//Добавить группу
public void AddGroup(string name,
string surname, int god)
{
getDataSet().Tables["Prodavec"].Rows.Add(0, name,
surname, god);
prodDataAdapter.Update(getDataSet(), "Prodavec");
}
//Заменить группу
public void UpdateGroup(int row, string name,
string surname, int god)
{
getDataSet().Tables["Prodavec"].Rows[row]["nameprod"] = name;
getDataSet().Tables["Prodavec"].Rows[row]["surname"] = surname;
getDataSet().Tables["Prodavec"].Rows[row]["god"] = god;
prodDataAdapter.Update(getDataSet(), "Prodavec");
}
//Получить форму добавления и замены студента
public Form4 getForm4()
{
if (form4 == null)
{
form4 = new Form4();
form4.setPerent(this);
}
return form4;
}
//Добавить студента
public void AddStudent(string name,
int price, int ves, long prodId)
{
getDataSet().Tables["Tovar"].Rows.Add(0, name, price, ves,
prodId);
tovarDataAdapter.Update(getDataSet(), "Tovar");
}
//Заменить студента
public void UpdateStudent(int row, string name,
int price, int ves)
{
getDataSet().Tables["Tovar"].Rows[row]["name"] = name;
getDataSet().Tables["Tovar"].Rows[row]["price"] = price;
getDataSet().Tables["Tovar"].Rows[row]["ves"] = ves;
tovarDataAdapter.Update(getDataSet(), "Tovar");
}
public Form1()
{
InitializeComponent();
}
private void подключениеКБазеToolStripMenuItem_Click(object sender,
EventArgs e)
{
getForm2().Visible = true;
}
private void отключениеОтБазыToolStripMenuItem_Click(object sender,
EventArgs e)
{
connection.Close();
}
private void добавитьToolStripMenuItem_Click(object sender, EventArgs
e)
{
getForm3().Visible = true;
getForm3().setButton1Visible(true);
getForm3().setButton2Visible(false);
getForm3().setTextBox1Text("");
getForm3().setTextBox2Text("");
getForm3().setTextBox3Text("");
}
private void удалитьToolStripMenuItem_Click(object sender, EventArgs
e)
{
int selectedRow = dataGridView1.SelectedCells[0].RowIndex;
DialogResult dr = MessageBox.Show("Удалить продавца?", "",
MessageBoxButtons.YesNo);
if (dr == DialogResult.Yes)
{
getDataSet().Tables["Prodavec"].Rows[selectedRow].Delete();
prodDataAdapter.Update(getDataSet(), "Prodavec");
getDataSet().Clear();
FillDataGridView1ByProdavec();
}
}
private void заменитьToolStripMenuItem_Click(object sender, EventArgs
e)
{
int selectedRow = dataGridView1.SelectedCells[0].RowIndex;
string name =
(string)getDataSet().Tables["Prodavec"].Rows[selectedRow].ItemArray[1];
string surname =
(string)getDataSet().Tables["Prodavec"].Rows[selectedRow].ItemArray[2];
int god =
(int)getDataSet().Tables["Prodavec"].Rows[selectedRow].ItemArray[3];
getForm3().Visible = true;
getForm3().setButton1Visible(false);
getForm3().setButton2Visible(true);
getForm3().setTextBox1Text(name);
getForm3().setTextBox2Text(surname);
getForm3().setTextBox3Text(System.Convert.ToString(god));
getForm3().setRow(selectedRow);
}
private void добавитьToolStripMenuItem1_Click(object sender,
EventArgs e)
{
getForm4().Visible = true;
getForm4().setButton1Visible(true);
getForm4().setButton2Visible(false);
getForm4().setTextBox1Text("");
getForm4().setTextBox2Text("");
getForm4().setTextBox3Text("");
int selectedRow = dataGridView1.SelectedCells[0].RowIndex;
long prodavecId =
(long)getDataSet().Tables["Prodavec"].Rows[selectedRow].ItemArray[0];
string nameprod =
(string)getDataSet().Tables["Prodavec"].Rows[selectedRow].ItemArray[1];
getForm4().setGroupName(nameprod);
getForm4().setGroupId(prodavecId);
}
private void удалитьToolStripMenuItem1_Click(object sender, EventArgs
e)
{
int selectedRow = dataGridView2.SelectedCells[0].RowIndex;
DialogResult dr = MessageBox.Show("Удалить товар?", "",
MessageBoxButtons.YesNo);
if (dr == DialogResult.Yes)
{
getDataSet().Tables["Tovar"].Rows[selectedRow].Delete();
tovarDataAdapter.Update(getDataSet(), "Tovar");
string key = (string)dataGridView1
.Rows[selectedRow].Cells[1].Value;
FillDataGridView2ByTovar(key);
}
}
private void заменитьToolStripMenuItem1_Click(object sender,
EventArgs e)
{
int selectedRow = dataGridView2.SelectedCells[0].RowIndex;
string name = (string)getDataSet().Tables["Tovar"]
.Rows[selectedRow].ItemArray[1];
int price = (int)getDataSet().Tables["Tovar"]
.Rows[selectedRow].ItemArray[2];
int ves = (int)getDataSet().Tables["Tovar"]
.Rows[selectedRow].ItemArray[3];
getForm4().Visible = true;
getForm4().setButton1Visible(false);
getForm4().setButton2Visible(true);
getForm4().setTextBox1Text(name);
getForm4().setTextBox2Text(System.Convert.ToString(price));
getForm4().setTextBox3Text(System.Convert.ToString(ves));
getForm4().setRow(selectedRow);
int selectedRow1 = dataGridView1.SelectedCells[0].RowIndex;
string groupName = (string)getDataSet().Tables["Prodavec"]
.Rows[selectedRow1].ItemArray[1];
getForm4().setGroupName(groupName);
}
private void dataGridView1_CellClick(object sender,
DataGridViewCellEventArgs e)
{
int selectedRow = dataGridView1.SelectedCells[0].RowIndex;
string key =
(string)dataGridView1.Rows[selectedRow].Cells[1].Value;
FillDataGridView2ByTovar(key);
}
private void сортировка1ToolStripMenuItem_Click(object sender,
EventArgs e)
{
DataViewManager dvm = new DataViewManager();
dvm.DataSet = dataSet;
dvm.DataViewSettings["Prodavec"].Sort = "nameprod";
dataGridView1.DataSource = dvm;
dataGridView1.DataMember = "Prodavec";
}
private void сортировка2ToolStripMenuItem_Click(object sender,
EventArgs e)
{
DataViewManager dvm = new DataViewManager();
dvm.DataSet = dataSet;
dvm.DataViewSettings["Prodavec"].Sort = "id";
dataGridView1.DataSource = dvm;
dataGridView1.DataMember = "Prodavec";
}
}
}
Form2.cs
using
using
using
using
using
using
using
using
using
System;
System.Collections.Generic;
System.ComponentModel;
System.Data;
System.Drawing;
System.Linq;
System.Text;
System.Windows.Forms;
Npgsql;
namespace lab3
{
public partial class Form2 : Form
{
private Form1 perent;
public void setPerent(Form1 perent)
{
this.perent = perent;
}
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string server = "localhost";
int port = 5432;
string database = "market";
string user = "postgres";
string passwd = "06031992";
NpgsqlConnection connection =
perent.Connect(server, port, database, user, passwd);
perent.setConnection(connection);
perent.FillDataGridView1ByProdavec();
this.Visible = false;
}
}
}
Form3.cs
using
using
using
using
using
using
using
using
System;
System.Collections.Generic;
System.ComponentModel;
System.Data;
System.Drawing;
System.Linq;
System.Text;
System.Windows.Forms;
namespace lab3
{
public partial class Form3 : Form
{
private Form1 perent = null;
private int row;
public void setPerent(Form1 perent)
{
this.perent = perent;
}
public void setRow(int row)
{
this.row = row;
}
public void setTextBox1Text(string
{
textBox1.Text = text;
}
public void setTextBox2Text(string
{
textBox2.Text = text;
}
public void setTextBox3Text(string
{
textBox3.Text = text;
}
public void setButton1Visible(bool
{
this.button1.Visible = value;
}
public void setButton2Visible(bool
{
this.button2.Visible = value;
}
text)
text)
text)
value)
value)
public Form3()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
perent.AddGroup(textBox1.Text, textBox2.Text,
System.Convert.ToInt32(textBox3.Text));
perent.FillDataGridView1ByProdavec();
this.Visible = false;
}
private void button2_Click(object sender, EventArgs e)
{
perent.UpdateGroup(row, textBox1.Text, textBox2.Text,
System.Convert.ToInt32(textBox3.Text));
perent.FillDataGridView1ByProdavec();
this.Visible = false;
}
}
}
Form4.cs
using
using
using
using
using
using
using
using
System;
System.Collections.Generic;
System.ComponentModel;
System.Data;
System.Drawing;
System.Linq;
System.Text;
System.Windows.Forms;
namespace lab3
{
public partial class Form4 : Form
{
private Form1 perent = null;
private string nameprod;
private long groupId;
private int row;
public void setPerent(Form1 perent)
{
this.perent = perent;
}
public void setGroupName(string nameprod)
{
this.nameprod = nameprod;
}
public void setGroupId(long groupId)
{
this.groupId = groupId;
}
public void setRow(int row)
{
this.row = row;
}
public void setTextBox1Text(string
{
textBox1.Text = text;
}
public void setTextBox2Text(string
{
textBox2.Text = text;
}
public void setTextBox3Text(string
{
textBox3.Text = text;
}
public void setButton1Visible(bool
{
this.button1.Visible = value;
}
public void setButton2Visible(bool
{
this.button2.Visible = value;
}
text)
text)
text)
value)
value)
public Form4()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
perent.AddStudent(textBox1.Text,
System.Convert.ToInt32(textBox2.Text), System.Convert.ToInt32(textBox3.Text),
groupId);
perent.FillDataGridView2ByTovar(nameprod);
this.Visible = false;
}
private void button2_Click(object sender, EventArgs e)
{
perent.UpdateStudent(row, textBox1.Text,
System.Convert.ToInt32(textBox2.Text),
System.Convert.ToInt32(textBox3.Text));
perent.FillDataGridView2ByTovar(nameprod);
this.Visible = false;
}
}
}
Рисунок 3.2 – Интерфейс программы
Выводы
В данной лабораторной были изучены возможности доступа к
базам данных, используя технологию ADO.NET, получены практические
навыки по работе с классами ADO.NET.
Документ
Категория
Техническая документация
Просмотров
86
Размер файла
152 Кб
Теги
работа, лабораторная
1/--страниц
Пожаловаться на содержимое документа