Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Дипломная работа_Резникова.doc
Скачиваний:
6
Добавлен:
13.11.2019
Размер:
804.86 Кб
Скачать

2.3 Класс, выполняющий операции над данными в базе

Также необходимо разработать служебный класс, выполняющий операции над данными в базе. Этот класс использует хранимые процедуры, показанные выше. Он инкапсулирует весь код доступа к данным и специфичные для конкретной базы детали. Вот его структура:

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.Data.SqlClient;

using System.Collections.Generic;

using System.Web.Caching;

using System.ComponentModel;

using System.Drawing;

using System.Collections;

using System.Web.Configuration;

using System.Text;

using MB.AppliedMathematics.DAL.Details;

namespace MB.AppliedMathematics.DAL.SqlClient

{

public class SQLNewsletterProvider

{private string connectionString;

public SQLNewsletterProvider()

{

// Получить строку соединения по умолчанию

connectionString = WebConfigurationManager.ConnectionStrings["LocalSqlServerConnection"].ConnectionString;

}

public SQLNewsletterProvider(string connectionStringName)

{

// получить конкретную строку соединения

connectionString = WebConfigurationManager.ConnectionStrings["connectionStringName"].ConnectionString;

}

// добавление новости

public int InsertNewsletter(DateTime AddedDate, string AddedBy, string Subject, string HtmlBody)

{ if (AddedBy == null) { AddedBy = ""; }

if (Subject == null) { Subject = ""; }

if (HtmlBody == null) { HtmlBody = ""; }

if (AddedDate == null) { AddedDate = DateTime.Now; }

SqlConnection cn = new SqlConnection(connectionString);

SqlCommand cmd = new SqlCommand("tbh_Newsletters_InsertNewsletter", cn);

cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Add("@AddedDate", SqlDbType.DateTime).Value = AddedDate;

cmd.Parameters.Add("@AddedBy", SqlDbType.NVarChar).Value = AddedBy;

cmd.Parameters.Add("@Subject", SqlDbType.NVarChar).Value = Subject;

cmd.Parameters.Add("@HtmlBody", SqlDbType.NText).Value = HtmlBody;

cmd.Parameters.Add("@NewsletterID", SqlDbType.Int).Direction = ParameterDirection.Output;

try

{cn.Open();

cmd.ExecuteNonQuery();

return (int)cmd.Parameters["@NewsletterID"].Value;}

finally

{cn.Close();}}

// получение новости по ее идентификатору (ID)

public NewsletterDetails GetNewsletterByID(int id)

{using (SqlConnection con = new SqlConnection(connectionString))

{

SqlCommand cmd = new SqlCommand("tbh_Newsletters_GetNewsletterByID", con);

cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Add("@NewsletterID", SqlDbType.Int).Value = id;

try

{con.Open();

SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.SingleRow);

// получить первую строку

reader.Read();

NewsletterDetails newslett = new NewsletterDetails(Convert.ToInt32(reader["NewsletterID"]), Convert.ToDateTime(reader["AddedDate"]), Convert.ToString(reader["AddedBy"]), Convert.ToString(reader["Subject"]), Convert.ToString(reader["HtmlBody"]), Convert.ToBoolean(reader["NewsletterSend"]));

reader.Close();

return newslett;}

catch (SqlException err)

{throw new ApplicationException("Ошибка данных");}

finally

{con.Close();

}}}

// получить все новости с частичным поиском по полям:Subject, HtmlBody, AddedBy, AddedDate

public List<NewsletterDetails> GetNewsletters( string param)

{SqlConnection con = new SqlConnection(connectionString);

SqlCommand cmd = new SqlCommand("tbh_Newsletters_GetNewsletters", con);

cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Add("@param", SqlDbType.NVarChar).Value = "%"+param+"%";

// Создать коллекцию для всех записей

List<NewsletterDetails> newsletter = new List<NewsletterDetails>();

try

{con.Open();

SqlDataReader reader = cmd.ExecuteReader();

while (reader.Read())

{NewsletterDetails newslet = new NewsletterDetails(Convert.ToInt32(reader["NewsletterID"]), Convert.ToDateTime(reader["AddedDate"]), Convert.ToString(reader["AddedBy"]), Convert.ToString(reader["Subject"]), Convert.ToString(reader["HtmlBody"]), Convert.ToBoolean(reader["NewsletterSend"]));

newsletter.Add(newslet);}

reader.Close();

return newsletter;}

catch (SqlException err)

{throw new ApplicationException("Ошибка данных");}

finally

{con.Close();}

}

// получить последние 3 новости

public List<NewsletterDetails> GetNewsletters3()

{SqlConnection con = new SqlConnection(connectionString);

SqlCommand cmd = new SqlCommand("tbh_Newsletters_GetNewsletters3", con);

cmd.CommandType = CommandType.StoredProcedure;

// Создать коллекцию для всех записей

List<NewsletterDetails> newsletter = new List<NewsletterDetails>();

try

{con.Open();

SqlDataReader reader = cmd.ExecuteReader();

while (reader.Read())

{NewsletterDetails newslet = new NewsletterDetails(Convert.ToInt32(reader["NewsletterID"]), Convert.ToDateTime(reader["AddedDate"]), Convert.ToString(reader["AddedBy"]), Convert.ToString(reader["Subject"]), Convert.ToString(reader["HtmlBody"]), Convert.ToBoolean(reader["NewsletterSend"]));

newsletter.Add(newslet);}

reader.Close();

return newsletter;}

catch (SqlException err)

{throw new ApplicationException("Ошибка данных");}

finally

{con.Close();}

}

// новость отослана подписчикам

public void UpdateNewsletterSend( int id)

{SqlConnection cn = new SqlConnection(connectionString);

SqlCommand cmd = new SqlCommand("tbh_Newsletters_UpdateNewsletterSend", cn);

cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Add("@NewsletterID", SqlDbType.Int).Value = id;

try

{cn.Open();

cmd.ExecuteNonQuery();

}

finally

{cn.Close();}}

// обновить новость

public void UpdateNewsletter(string Subject, string HtmlBody, int id)

{if (Subject == null) { Subject = ""; }

if (HtmlBody == null) { HtmlBody = ""; }

SqlConnection cn = new SqlConnection(connectionString);

SqlCommand cmd = new SqlCommand("tbh_Newsletters_UpdateNewsletter", cn);

cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Add("@Subject", SqlDbType.NVarChar).Value = Subject;

cmd.Parameters.Add("@HtmlBody", SqlDbType.NText).Value = HtmlBody;

cmd.Parameters.Add("@NewsletterID", SqlDbType.Int).Value = id;

try

{cn.Open();

cmd.ExecuteNonQuery();}

finally

{cn.Close();}}

//удалить новость

public void DeleteNewsletter(int id)

{{

SqlConnection con = new SqlConnection(connectionString);

SqlCommand cmd = new SqlCommand("tbh_Newsletters_DeleteNewsletter", con);

cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Add(new SqlParameter("@NewsletterID", SqlDbType.Int));

cmd.Parameters["@NewsletterID"].Value = id;

try

{con.Open();

cmd.ExecuteNonQuery();}

finally

{con.Close();

}}}}}