К проекту Windows Form Application, создание объекта OleDbConnection




Для того, чтобы иметь возможность программного обращения к базе данных, т.е. осуществлять операции вставки, редактирования, удаления информации необходимо осуществить создание программного объекта класса OleDbConnection.

 

Примечание. OleDb является одной из нескольких поддерживаемых средой Visual Studio технологий работы с базами данных.

Для организации работы с базой данных создадим специальный класс BataBase. Для добавления класса необходимо выбрать проект в дереве решений и нажать на него правой кнопкой мыши, рис. 5, а. В появившемся меню выбрать пункт «Add» \ «New Item». В списке возможных к добавлению элементов проекта выберите «Class», рис. 5, б.

а)

а)

Рис. 5 – Добавление класса

Реализуем в классе DataBase private пустой объект класса OleDbConnection. Этот объект используется в функциях класса OpenConnection, CloseConnection для открытия и закрытия соединения соответственно.

Для работы с таблицей Persons, Phones создадим перечень функций как показано в табл. 2.

Таблица 2 – Перечень функций для работы с Persons, Phones

Название функции Назначение
AddPerson Добавление данных в таблицу Persons
EditPerson Добавление данных таблицы Persons
DeletePerson Удаление данных таблицы Persons
CountPerson Определение количества добавленных персоналий с определенным Ф.И.О., датой рождения
SelectPerson Получение всех данных таблицы Persons
AddPhonePerson Добавление телефона персоналии
EditPhonePerson Редактирование телефона персоналии
DeletePhonePerson Удаление телефона персоналии
CountPhonePerson Определение количества добавленых телефонов персоналии
SelectPhoneByPersonId Получение списка телефонов по ключу персоналии

 

Код класса DataBase:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Data;

using System.Data.OleDb;

 

namespace Lab3

{

public class DataBase

{

private string DataBasePath = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=Lab3.mdb;";

private OleDbConnection MyConn = null;

 

// Открытие соединения

public void OpenConnection()

{

MyConn = new OleDbConnection(DataBasePath);

MyConn.Open();

}

 

// Закрытие соединения

public void CloseConnection()

{

if (MyConn!= null)

if (MyConn.State!= ConnectionState.Closed)

{

MyConn.Close();

MyConn = null;

}

}

 

# region Person Работа с таблицей персон

 

// Выбор всех данных таблицы Persons

public DataTable SelectPerson()

{

OpenConnection();

 

DataTable dtResult = new DataTable();

OleDbDataAdapter myDA=new OleDbDataAdapter("select * from Person", MyConn);

myDA.Fill(dtResult);

 

CloseConnection();

 

return dtResult

}

 

// Определение кол-ва существующих персон в таблице Persons

public Int32 CountPerson(string Fam, string Name, string Otch, string DateBirth)

{

OpenConnection();

OleDbCommand myComm = new OleDbCommand("select count(*) from Person where Fam=@Fam and Nam=@Nam and Otch=@Otch and DateBirth=@DateBirth", MyConn);

 

// Добавление параметров SQL запроса

myComm.Parameters.Add("Fam", OleDbType.VarChar).Value = Fam;

myComm.Parameters.Add("Nam", OleDbType.VarChar).Value = Name;

myComm.Parameters.Add("Otch", OleDbType.VarChar).Value = Otch;

myComm.Parameters.Add("DateBirth", OleDbType.VarChar).Value = DateBirth;

 

Int32 Result = Int32.Parse(myComm.ExecuteScalar().ToString());

 

CloseConnection();

return Result;

}

 

// Добавление данных в таблицу Persons

public Int32 AddPerson(string Fam, string Name, string Otch, string DateBirth)

{

OpenConnection();

OleDbCommand myComm = new OleDbCommand("insert into Person (Fam, Nam, Otch, DateBirth) values (@Fam, @Name, @Otch, @DateBirth)", MyConn);

 

// Добавление параметров SQL запроса

myComm.Parameters.Add("Fam", OleDbType.VarChar).Value = Fam;

myComm.Parameters.Add("Nam", OleDbType.VarChar).Value = Name;

myComm.Parameters.Add("Otch", OleDbType.VarChar).Value = Otch;

myComm.Parameters.Add("DateBirth", OleDbType.VarChar).Value = DateBirth;

 

Int32 Result = myComm.ExecuteNonQuery();

 

CloseConnection();

return Result;

}

 

// Редактирование данных в таблицу Persons

public Int32 EditPerson(Int32 id, string Fam, string Name, string Otch, string DateBirth)

{

OpenConnection();

OleDbCommand myComm = new OleDbCommand("update Person set Fam=@Fam, Nam=@Nam, Otch=@Otch, DateBirth=@DateBirth where id=@id", MyConn);

 

// Добавление параметров SQL запроса

myComm.Parameters.Add("Fam", OleDbType.VarChar).Value = Fam;

myComm.Parameters.Add("Nam", OleDbType.VarChar).Value = Name;

myComm.Parameters.Add("Otch", OleDbType.VarChar).Value = Otch;

myComm.Parameters.Add("DateBirth", OleDbType.VarChar).Value = DateBirth;

myComm.Parameters.Add("id", OleDbType.Integer).Value = id;

 

Int32 Result = myComm.ExecuteNonQuery();

 

CloseConnection();

return Result;

}

 

// Удаление данных в таблицы Persons

public Int32 DeletePerson(Int32 id)

{

OpenConnection();

OleDbCommand myComm = new OleDbCommand("delete from Person where id=@id", MyConn);

 

// Добавление параметров SQL запроса

myComm.Parameters.Add("id", OleDbType.Integer).Value = id;

 

Int32 Result = myComm.ExecuteNonQuery();

 

CloseConnection();

return Result;

}

 

#endregion

 

#region Работа с таблицей Phones

 

public DataTable SelectPhoneByPersonId(Int32 Person_id)

{

OpenConnection();

 

DataTable dtResult = new DataTable();

OleDbDataAdapter myDA=new OleDbDataAdapter("select count(*) from Phones where Person_id=@Person_id and Phone=@Phone", MyConn);

myDA.SelectCommand.Parameters.Add(("Person_id", OleDbType.Integer).Value= Person_id;

myDA.Fill(dtResult);

 

CloseConnection();

 

return dtResult;

}

 

// Определение кол-ва существующих телефонов персоны в таблице Phones

public Int32 CountPhonePerson(Int32 Person_id, string Phone)

{

OpenConnection();

OleDbCommand myComm = new OleDbCommand("select count(*) from Phones where Person_id=@Person_id and Phone=@Phone", MyConn);

 

// Добавление параметров SQL запроса

myComm.Parameters.Add("Person_id", OleDbType.Integer).Value = Person_id;

myComm.Parameters.Add("Phone", OleDbType.VarChar).Value = Phone;

 

Int32 Result = Int32.Parse(myComm.ExecuteScalar().ToString());

 

CloseConnection();

return Result;

}

 

// Добавление телефона персоне по ее id

public Int32 AddPhonePerson(Int32 Person_id, string Phone)

{

OpenConnection();

OleDbCommand myComm = new OleDbCommand("insert into Phones (Person_id, Phone) values (@Person_id, @Phone)", MyConn);

 

// Добавление параметров SQL запроса

myComm.Parameters.Add("Person_id", OleDbType.VarChar).Value = Person_id;

myComm.Parameters.Add("Phone", OleDbType.VarChar).Value = Phone;

 

Int32 Result = myComm.ExecuteNonQuery();

 

CloseConnection();

return Result;

}

 

// Редактирование телефона персоны по ее id

public Int32 EditPhonePerson(Int32 id, string Phone)

{

OpenConnection();

OleDbCommand myComm = new OleDbCommand("update Phone set Phone=@Phone where id=@id", MyConn);

 

// Добавление параметров SQL запроса

myComm.Parameters.Add("Phone", OleDbType.VarChar).Value = Phone;

myComm.Parameters.Add("id", OleDbType.Integer).Value = id;

 

Int32 Result = myComm.ExecuteNonQuery();

 

CloseConnection();

return Result;

}

 

// Удаление телефона персоны по ее id

public Int32 DeletePhonePerson(Int32 id, string Phone)

{

OpenConnection();

OleDbCommand myComm = new OleDbCommand("delete from Phone where id=@id", MyConn);

 

// Добавление параметров SQL запроса

myComm.Parameters.Add("id", OleDbType.Integer).Value = id;

 

Int32 Result = myComm.ExecuteNonQuery();

 

CloseConnection();

return Result;

}

 

#endregion

 

}

}

 

Примечание. Для того, чтобы создаваемое программное приложение могло обращаться к базе данных оно должно иметь информацию о местоположении файла базы данных. Эти сведения предоставляются классу OleDbConnection посредством строки соединения (connectionstring). В том случае, если файл базы данных находится в папке Bin\Debug программного приложения путь может состоять только из имени файла. В противном случае необходимо указывать полное место расположения файла в корневой системе компьютера.

Преобразование типов данных от string к Int32 и Double осуществляется специальным методом Parse этих классов (Int32 Test=Int32.Parse(“101”)). Преобразование Int32, Double и др. к String осуществляется вызовом метода ToString() (Int32 A=10; String Test=A.ToString()).

 



Поделиться:




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

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


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