- •Оглавление
- •Введение
- •Общая характеристика работы
- •Глава 1 построение логической модели
- •1.1 Постановка задачи
- •1.2 Описание предметной области
- •1.3 Описание логической структуры таблиц базы данных
- •1.4.Связи в таблицах
- •1.5 Описание программного обеспечения, используемого в работе
- •1.6 Система меню
- •Глава 2 состав отдельных модулей
- •2.1 Хранимые процедуры
- •2.2 Класс связующий информацию сайта с базой данной
- •2.3 Класс, выполняющий операции над данными в базе
- •2.4 Страница сайта, отображающая информацию с базы данных Newsletters.Aspx:
- •2.5 Страница сайта, отображающая информацию с базы данных Newsletters.Cs
- •2.6 Страница добавления (изменения) информации из базы данных AddEditNewsletters.Cs.
- •Заключение
- •Список использованных источников
- •Приложения:
- •Приложение a.
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();
}}}}}