Кнопка Внести изменения в базу данных




Лабораторная работа по предмету «Базы данных»

Тема: «Работа с базой данных в среде Visual.Net»

Схема типичной программы в ADO.NET

  1. Вначале создается соединение с базой данных – класс Connection, который обеспечивается необходимой информацией – строкой соединения.
  2. Создается объект Command и задается команда, которую необходимо выполнить в данной СУБД. Нужно задать параметры этой команды, если они имеются.
  3. Если команда не возвращает данных, она просто выполняется с помощью одного из методов Execute. Например, это может быть удаление или обновление данных таблицы.
  4. Если команда возвращает выборку данных, их необходимо куда-то поместить. Если необходимо получить данные для последующего использования без связи с базой данных, то нужно создать объект класса DataAdapter и с его помощью сохранить данные в DataSet или в DataTable. Если нужно просто быстро выполнить команду, то создается класс DataReader, который требует сохранять соединение на все время работы, хранит выборку только для чтения и позволяет двигаться только вперед. Зато чтение с помощью DataReader выполняется в несколько раз быстрее, чем в DataAdapter.
  5. Задать полученный DataSet или DataReader как источник данных элемента управления или вывести их на страницу другим способом.

Объект Connection

Объект Connection для соединения с базой данных нуждается в строке соединения для указания пути к СУБД и входа в систему. Свойства класса Connection показаны в таблице. OleDbConnection, SqlConnection, OdbcConnection – наследники класса Connection, специфические для провайдеров OleDb, MS SQL, ODBC соответственно.

Свойство Описание
DataSource Путь к базе данных в файловой системе при использовании Oledb, имя экземпляра базы сервера при использовании SqlConnection
Database Возвращает имя базы данных, используемой в объекте Connection после открытия
State Возвращает текущее состояние соединения. Возможные значения: Broken – «Соединение с источником данных разорвано», значение 16 Closed – «Соединение закрыто », значение 0 Connecting – «Идет процесс подключения », значение 2 Executing – «Соединение находится в процессе выполнения команды 4; Fetching – «Объект соединения занят выборкой данных» значение 8 Open – «Соединение открыто» значение 1.
ConnectionString Строка соединения с СУБД

Все свойства, кроме ConnectionString, только для чтения.

Открытые методы

BeginTransaction Перегружен. Начинает транзакцию базы данных
ChangeDatabase Изменяет текущую базу данных для открытого OleDbConnection
Close Закрывает подключение к источнику данных. Это рекомендуемый метод закрытия любого открытого подключения
CreateCommand Создает и возвращает объект OleDbCommand, связанный с OleDbConnection
CreateObjRef (унаследовано от MarshalByRefObject) Создает объект, содержащий всю необходимую информацию для конструирования прокси-сервера
Dispose (унаследовано от Component) Перегружен. Освобождает ресурсы, используемые объектом Component
EnlistDistributedTransaction Зачисляет в указанную транзакцию в качестве распределенной транзакции
Equals (унаследовано от Object) Перегружен. Определяет, равны ли два экземпляра Object
GetHashCode (унаследовано от Object) Служит хэш-функцией для конкретного типа, пригоден для использования в алгоритмах хэширования и структурах данных, например в хэш-таблице
GetLifetimeService (унаследовано от MarshalByRefObject) Извлекает служебный объект текущего срока действия, который управляет средствами срока действия данного экземпляра
GetOleDbSchemaTable Возвращает сведения схемы из источника данных так же, как указано в GUID, и после применения указанных ограничений
GetType (унаследовано от Object) Возвращает Type текущего экземпляра
InitializeLifetimeService (унаследовано от MarshalByRefObject) Получает служебный объект срока действия для управления средствами срока действия данного экземпляра
Open Открывает подключение к базе данных со значениями свойств, определяемыми ConnectionString
ReleaseObjectPoolOleDb Connection Статический. Означает, что пул объектов может быть освобожден, когда последнее основное подключение будет освобождено
ToString (унаследовано от Object) Возвращает String, который представляет текущий Object

 

Поставщик данных для приложения (Провайдер) – объект, предназначенный для обеспечения взаимодействия приложения с хранилищем информации (базами данных).

Источник данных (Data Provider) – это набор взаимосвязанных компонентов, обеспечивающих доступ к данным. Функциональность и само существование провайдера обеспечивается набором классов, специально для этой цели разработанных.

Объект DataSet – основной элемент в поддержке отсоединенного сценария работы с распределенными данными в ADO.NET. DataSet – это представление данных в памяти, предоставляющее полноценную реляционную модель, независимо от источника данных. Его можно использовать с несколькими различными источниками данных, например, данными из БД и XML. Кроме того, он представляет собой довольно мощную структуру данных, пригодную для автономного использования. DataSet может содержать несколько таблиц, связанных ограничениями и реляционными отношениями.

DataSet состоит из объектов типа DataTable и объектов DataRelation. К ним можно обращаться как к свойствам объекта DataSet. Свойство Tables возвращает объект типа DataTableCollection, который содержит все объекты DataTable используемой базы.

Объект типа DataTable представляет собой таблицу базы данных. Такой объект может быть создан программно или путем запроса к базе данных. Объект DataTable состоит из строк и столбцов. Строки представляют собой отдельные записи таблицы, столбцы — соответствующие поля.

Для получения совокупности столбцов объект DataSet имеет свойство Columns, возвращающее DataColumnCollection, которое в свою очередь состоит из объектов типа DataColumn. Каждый объект DataColumn представляет собой отдельный столбец таблицы, из которого можно получить любую запись.

Кроме набора таблиц DataSet имеет свойство Relations, которое возвращает объект типа Data Relation Collection, состоящий из объектов DataRelation. Каждый DataRelation объект хранит данные о связях между двумя таблицами посредством объектов DataColumn. Например, в базе данных Institute, которую предлагается вам создать, таблица Students имеет связь с таблицей Examen посредством столбца NumZac. Такое отношение называется на языке баз данных один ко многим (one-to-many). Любой результат экзамена может принадлежать только одному студенту, но один студент может сдать сколько угодно экзаменов.

DataSet —это образ реляционной базы данных. ADO.NET использует объект типа DataAdapter как мост между DataSet и источником данных, который является основной базой данных. DataAdapter содержит метод Fill() для обновления данных из базы и заполнения DataSet.

 

Таблица 1. Наиболее важные члены OleDbDataAdapter

Член Описание
DeleteCommand InsertCotnmand SelectCommand UpdateCommand Используются для определения того, какая именно команда SQL будет передана на источник данных при вызове метода Update(). Каждое из этих свойств определяется при помощи объектов OleDbCommand.
Fill() Заполняет указанную таблицу в DataSet определенным пользователем количеством записей
GetFillParameters() Возвращает все параметры, использованные при выполнении запроса SELECT к источнику данных
Update () Вызывает соответствующие команды INSERT, UPDATE, DELETEк источнику данных для каждой вставленной, измененной или удаленной строки в таблице объекта DataSet.

 

При использовании свойств DeleteCommand, InsertCommand, UpdateCommand, SelectCommand объект OleDbDataAdapter автоматически переводит внесенные нами изменения в таблицу данных в DataSet в соответствующие команды на языке SQL, сохраняя, таким образом, внесенные нами в DataSet изменения в источнике данных. Эти свойства позволяют определить соответствующие команды SQL в деталях.

С# включает такой мощный инструмент для отображения данных, как элемент управления DataGrid. DataGrid может применяться как для разработки Windows Forms приложений, так и для разработки Web-приложений. DataGrid - это элемент управления, который сочетает в себе все возможности таблицы Excel.

 

Создайте Windows приложение в среде Visual Studio.

Шаг-1: Создание проекта

Необходимо запустить среду разработки Visual Studio.Net 2010. Для этого вы должны выбрать закладку с названием Visual Studio.Net 2010. из меню ПускПрограммыMicrosoft Visual Studio.Net 2010. После этого откроется среда разработки Visual Studio.Net 2010. Дальше вам необходимо создать новый проект. Для этого выберете элемент Project из меню: FileNewProject:

С появившимся меню вам нужно проделать следующие действия:

1. В поле PInstalled Templates выберите Visual C# Windows;

2. В поле New Project выберите Windows Form Application;

3. В поле Name введите BD_prim:

и нажмите ОК.

Добавьте в проект форму. Перед вами появится пустой шаблон формы (окна будущего приложения), создаваемый по умолчанию средой разработки Visual Studio.Net 2010. Вам нужно подключиться к базе данных Institut.mdb, установить на вашу форму компоненты BindingSource и InstituteDataSet и настроить их.

В окне формы внизу появится значок

Далее будем создавать вот такую форму:

Для этого добавьте с панели инструментов ToolBox объект TabControl и расположите его на форме. В окне свойств (Properties) перейдите на строчку TabPages нажмите на . В окне tabPagesCollection Editor нажмите на кнопку ADD для добавления вкладок, измените свойства Name и Text следующим образом:

- для вкладки Студенты Name = tubStud, Text = Студенты;

- на второй вкладке Name = tubExam, Text = Экзамены;

- на третьей вкладке Name = tubStip, Text = Начисление стипендии.

Зайти в свойства (Properties) BindingSource1 и указать источник данных (Data Source), при этом указывается тип ДБ и ее расположение.

Затем перейдите на вкладку Студенты и добавьте следующие объекты с панели инструментов, изменив их свойства:

Name datGridStud

При добавлении откроется окно, в котором необходимо раскрыть список Choose Data Source

и выбрать из списка таблицу Students.

В форму добавятся объекты

Запустите приложение на выполнение (F5) и убедитесь, что объект DataGridView заполнился данными из таблицы Students, созданной базы данных Institute.mdb.

Добавьте три кнопки – объект Button:

 

Кнопка Добавить запись

Name butInsStud
Text Добавить запись

 

Кнопка Удалить запись

Name butDelStud
Text Удалить запись

 

Кнопка Внести изменения в базу данных

Name butUpdStud
Text Внести изменения в базу данных

 

Запустите приложение на выполнение. Обратите внимание, что подписи к столбцам данных соответствуют англоязычным названиям полей. Заменим названия столбцов, чтобы подписи выводились на русском языке. Для этого необходимо изменить свойства столбцов объекта DataGridView.

Для форматирования столбцов щелкните правой клавишей мыши по DataGridView выберите Edit Column, измените HeaderText на русскоязычные названия.

Измените свойство формы Form1 IsMDICinteiner в состояние True, это позволит использовать «дочерние» формы.

Добавьте в проект форму Project – Add windows Form, в открывшемся окне выберите Windows Form и назовите ее InsertStudents

 

Расположите элементы управления как показано на рисунке и задайте следующие свойства:

Надписи над текстовыми полями – объект Label, для данного объекта изменяйте свойство Text, на соответствующую русскоязычную надпись.

Добавьте текстовые поля – объект TextBox с панели ToolBox.

Измените соответственно свойство Name.

Номер зачетки Name txtNumZac
Фамилия Name txtFam
Имя Name txtName
Группа Name txtGruppa
Адрес Name txtAdress

 

 

Для отображения даты рождения вставьте объект с панели Toolbox – DateTimePicker.

Измените свойства:

Name dater
MinDate 1.01.1960

 

Для ввода номера специальности используйте объект – ComboBox.

Измените свойства, таким образом, что отображаться в списке будут названия специальностей NazvSpec, которые есть в таблице Speciality, а добавляться в таблицу будут числовые значения NumSpec:

Name cmbNumSpec  
DataSource Speciality (см. рис.) Источник данных
DisplayMember NazvSpec Отображаемые значения
Value member NumSpec Добавляемые значения

 

 

Перейдите на форму Form1 дважды щелкните на кнопке Добавить. Откроется программный код, внесите в него следующие изменения.

private void button1_Click(object sender, EventArgs e)

{ InsertStudents I = new InsertStudents();//создаем экземпляр дочерней формы

I.ShowDialog(); //открываем дочернюю форму InsertStudents

 

}

Далее перейдите на форму Добавление студентов, дважды щелкните по кнопке Добавить, в открывшемся программном коде внесите следующие изменения:

private void butInsert_Click(object sender, EventArgs e)

{

//создаем объект соединения

OleDbConnection con = new OleDbConnection();

//указываем строку соединения

con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + @"D:\bd_lab\lab2\lab2\Institut.mdb";

//открываем соединение

con.Open();

//создаем объект командной строки с текстом SQL запроса

OleDbCommand InsCom = new OleDbCommand("INSERT INTO Students VALUES (" +

Convert.ToInt32(txtNumZac.Text) + ",'" + txtFam.Text + "','" + txtName.Text + "','" + dateR.Value + "'," +

cmbNumSpec.SelectedValue + ",'" + txtGruppa.Text + "','" + txtAdr.Text + "')", con);

//Если запрос выполнится, то результат команды ExecuteNonQuery()=1

if (InsCom.ExecuteNonQuery() == 1)

{// выводим окно сообщения об успешном добавлении записи

MessageBox.Show("Добавление выполнено", "Добавление", MessageBoxButtons.OK, MessageBoxIcon.Information);

//заполняем адаптер данных, содержимым таблицы Students

this.studentsTableAdapter.Fill(this.institutDataSet.Students);

}

// обновляем адаптер данных

studentsTableAdapter.Update(institutDataSet.Students);

//закрываем соединение с базой данных

con.Close();

}

Внимание! При формировании ConnectionString указать реальный путь к базе данных Institute.mdb

Запустите приложение, нажав кнопку F5, перейдите на форму для добавления данных, введите данные, нажмите Добавить, в случае успешного выполнения закройте формы и запустите приложение заново и убедитесь, что данные добавлены. Откройте базу данных Microsoft Access проверьте добавление данных в таблицу Students.

Выполните индивидуальное задание преподавателя.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2018-01-31 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту:

Обратная связь