您的位置:首页 > 运维架构 > 网站架构

一步一步打造3层架构在线电影网站!(4)系统设计

2004-12-28 23:29 746 查看

1、 数据层

数据层由四个类组成,其中两个位信息承载类,MovieDetails and CategoryDetails,只有属性,无任何方法,分别代表表movies和categories中某行。另外两个为基本数据操作类,提供相应的具体数据操作,分别为:Movies and Categories。
以下分别用类图表示四个类的具体情况:
MovieDetails
+ movie_id:int
+ category_id:int
+ level:string
+ title:string
+ intro:string
+ uptime: DateTime
+ showtime: DateTime
+ viewcount:int
+ image:string
+ address:string
CategoryDetails
+ category_id:int
+ name:string
+ category_intro:string
Movie
+Movies(in connectionString:string)
+GetMovies():<unspecified>
+GetAllMovies():<unspecified>
+GetMoviesByCount():<unspecified>
+GetHeadlines():<unspecified>
+GetGetMovieDetails():<unspecified>
+GetDetailsRow():<unspecified>
+Add():int
+Update():bool
+Delete():bool
+AddViewcount():bool
Categories
+Categories(in connectionString:string)
+GetCategories():<unspecified>
+GetCategoryName():<unspecified>
+GetCategoryDetails():<unspecified>
+GetDetailsRow():<unspecified>
+Add():int
+Update():bool
+Delete():bool
以下详细描述两个基本数据操作类的方法:
Movies:
方法详情描述
public Movies( string newConnectiionString)类构造函数,以连接字符串作为参数
public DataSet GetMovies(int category_id)返回指定类型的所有电影条目
public DataSet GetHeadines(int category_id)返回指定类型条目的所有电影条目的movie_id、title、uptime、viewcount、image
public DataSet GetAllMovies()以上传时间为顺序返回所有电影信息
public DataSet GetMoviesByCount()以点击率为顺序返回所有电影信息
public DataSet GetHeadlines(int category_id)返回某一分类的电影头信息
public MoviesDetails GetMovieDetails(int movie_id)返回一个由movie_id指定的电影条目的具体内容
public DataRow GetDetailsRow(int movie_id)返回电影详细信息的DataRow
public int Add(int category_id,string level,string title,string intro,datetime uptime,datetime showtime,string image,string address)添加新的电影条目,如果成功则返回新的movie_id,如果有重复记录,则返回-1
public bool Update(int movie_id,int category_id,string level,string title,string intro,datetime showtime, string image,string address)更新指定电影条目的相关信息
public bool Delete(int movie_id)删除指定的电影条目
public bool AddViewcount(int movie_id)给指定的电影条目增加1单位访问量
Categories:
方法详情描述
public Categories( string newConnectiionString)类构造函数,以连接字符串作为参数
public DataSet GetCategories()返回包含所有分类的DataSet
public DataSet GetCategoryName()返回所有分类的名称和编号
public CategoryDetails  GetCategoryDetails(int category_id)返回描述指定分类的CategoryDetails实例
public DataRow GetDetailsRow(int category_id)返回指定ID分类条目的DataRow
public int Add(string name,string category_intro) 添加新的分类条目,如果成功则返回新的category_id,如果有重复记录,则返回-1
public bool Update(int category_id,string name,string category_intro)更新指定分类条目的详细信息
public bool Delete(int category_id)删除指定分类条目
Movies:
using System;
using System.Data;
using System.Data.SqlClient;

namespace Coofucoo.Data
{
public class MovieDetails
{
public int movie_id;
public int category_id;
public string level;
public string title;
public string intro;
public DateTime uptime;
public DateTime showtime;
public int viewcount;
public string image;
public string address;
}

public class Movies : Coofucoo.Core.DbObject
{
public Movies(string newConnectionString) : base(newConnectionString)
{ }

// return all the Movie of the specified category
public DataSet GetMovies(int category_id)
{
// create the parameters
SqlParameter[] parameters = {
new SqlParameter("@category_id", SqlDbType.Int, 4)
};

// set the values
parameters[0].Value = category_id;

return RunProcedure("GetMovies", parameters, "movies");
}

// return all the Movie order by upload time
public DataSet GetAllMovies()
{
return RunProcedure("GetAllMovies",new IDataParameter[]{},"movies");
}

public DataSet GetMoviesByCount()
{
return RunProcedure("GetMoviesByCount",new IDataParameter[]{},"MoviesByCount");
}

// return the headlines for the current and approved Movie
public DataSet GetHeadlines(int category_id)
{
// create the parameter
SqlParameter[] parameters = { new SqlParameter("@category_id", SqlDbType.Int, 4) };
parameters[0].Value = category_id;

return RunProcedure("GetHeadines", parameters, "Headlines");
}

// return only the record with the specified ID
public MovieDetails GetMovieDetails(int movie_id)
{
// create the parameter
SqlParameter[] parameters = { new SqlParameter("@movie_id", SqlDbType.Int, 4) };
parameters[0].Value = movie_id;

using(DataSet Movie = RunProcedure("GetMovieDetails", parameters, "MovieDetails"))
{
MovieDetails details = new MovieDetails();
// if the record was found, set the properties of the class instance
if (Movie.Tables[0].Rows.Count > 0)
{
DataRow rowMovie = Movie.Tables[0].Rows[0];
details.movie_id = Convert.ToInt32(rowMovie["movie_id"]);
details.category_id = Convert.ToInt32(rowMovie["category_id"]);
details.level = rowMovie["levell"].ToString();
details.title = rowMovie["title"].ToString();
details.intro = rowMovie["intro"].ToString();
details.uptime = Convert.ToDateTime(rowMovie["uptime"]);
details.showtime = Convert.ToDateTime(rowMovie["showtime"]);
details.viewcount = Convert.ToInt32(rowMovie["viewcount"]);
details.image = rowMovie["image"].ToString();
details.address = rowMovie["address"].ToString();
}
else
details.movie_id = -1;

return details;
}
}

// return only the record with the specified ID
public DataRow GetDetailsRow(int movie_id)
{
// create the parameter
SqlParameter[] parameters = { new SqlParameter("@movie_id", SqlDbType.Int, 4) };
parameters[0].Value = movie_id;

using(DataSet Movie = RunProcedure("GetMovieDetails", parameters, "MovieDetailsRow"))
{
return Movie.Tables[0].Rows[0];
}
}

// delete the record identified by the specified ID
public bool Delete(int movie_id)
{
int numAffected;

// create the parameter
SqlParameter[] parameters = { new SqlParameter("@movie_id", SqlDbType.Int, 4) };
parameters[0].Value = movie_id;

RunProcedure("DeleteMovie", parameters, out numAffected);

return (numAffected == 1);
}

// update the Movie identified by the specified ID
public bool Update(int movie_id, int category_id, string level, string title, string intro,
DateTime showtime, string image, string address)
{
int numAffected;

// create the parameters
SqlParameter[] parameters = {
new SqlParameter("@movie_id", SqlDbType.Int, 4),
new SqlParameter("@category_id", SqlDbType.Int, 4),
new SqlParameter("@levell", SqlDbType.NVarChar, 50),
new SqlParameter("@title", SqlDbType.NVarChar, 50),
new SqlParameter("@intro", SqlDbType.Text),
new SqlParameter("@showtime", SqlDbType.DateTime),
new SqlParameter("@image", SqlDbType.NVarChar, 100),
new SqlParameter("@address", SqlDbType.NVarChar, 100),
};

// set the values
parameters[0].Value = movie_id;
parameters[1].Value = category_id;
parameters[2].Value = level.Trim();
parameters[3].Value = title.Trim();
parameters[4].Value = intro.Trim();
parameters[5].Value = showtime;
parameters[6].Value = image.Trim();
parameters[7].Value = address.Trim();

RunProcedure("UpdateMovie", parameters, out numAffected);

return (numAffected == 1);
}


// add a Movie
public int Add(int category_id, string level, string title, string intro,
DateTime uptime, DateTime showtime, string image, string address)
{
int numAffected;

// create the parameters
SqlParameter[] parameters = {
new SqlParameter("@category_id", SqlDbType.Int, 4),
new SqlParameter("@level", SqlDbType.NVarChar, 50),
new SqlParameter("@title", SqlDbType.NVarChar, 50),
new SqlParameter("@intro", SqlDbType.Text),
new SqlParameter("@uptime", SqlDbType.DateTime),
new SqlParameter("@showtime", SqlDbType.DateTime),
new SqlParameter("@image", SqlDbType.NVarChar, 100),
new SqlParameter("@address", SqlDbType.NVarChar, 100),
new SqlParameter("@movie_id", SqlDbType.Int, 4)
};

// set the values
parameters[0].Value = category_id;
parameters[1].Value = level.Trim();
parameters[2].Value = title.Trim();
parameters[3].Value = intro.Trim();
parameters[4].Value = uptime;
parameters[5].Value = showtime;
parameters[6].Value = image.Trim();
parameters[7].Value = address.Trim();
parameters[8].Direction = ParameterDirection.Output;

RunProcedure("InsertMovie", parameters, out numAffected);

return (int)parameters[8].Value;
}


// set the Viewcount++
public bool AddViewcount(int movie_id)
{
int numAffected;

// create the parameters
SqlParameter[] parameters = {
new SqlParameter("@movie_id", SqlDbType.Int, 4)
};

// set the values
parameters[0].Value = movie_id;

RunProcedure("AddViewcount", parameters, out numAffected);

return (numAffected == 1);
}

}
}

Categories:
using System;
using System.Data;
using System.Data.SqlClient;
namespace Coofucoo.Data
{
public class CategoryDetails
{
public int category_id;
public string name;
public string category_intro;
}

public class Categories : Coofucoo.Core.DbObject
{
public Categories(string newConnectionString) : base(newConnectionString)
{ }

// return all the Categories
public DataSet GetCategories()
{
return RunProcedure("GetCategories", new IDataParameter[]{}, "Categories");
}

// return all name of the Categories
public DataSet GetCategoryName()
{
return RunProcedure("GetCategoryName", new IDataParameter[]{}, "CategoryName");
}

// return only the record with the specified ID
public CategoryDetails GetCategoryDetails(int category_id)
{
// create the parameter
SqlParameter[] parameters = { new SqlParameter("@category_id", SqlDbType.Int, 4) };
parameters[0].Value = category_id;

using(DataSet categories = RunProcedure("GetCategoryDetails", parameters, "CategoryDetails"))
{
CategoryDetails details = new CategoryDetails();
// if the record was found, set the properties of the class instance
if (categories.Tables[0].Rows.Count > 0)
{
DataRow rowCategory = categories.Tables[0].Rows[0];
details.category_id = (int)rowCategory["category_id"];
details.name = rowCategory["name"].ToString();
details.category_intro = rowCategory["category_intro"].ToString();
}
else
details.category_id = -1;

return details;
}
}

// return only the record with the specified ID
public DataRow GetDetailsRow(int category_id)
{
// create the parameter
SqlParameter[] parameters = { new SqlParameter("@category_id", SqlDbType.Int, 4) };
parameters[0].Value = category_id;

using(DataSet categories = RunProcedure("GetCategoryDetails", parameters, "CategoryDetails"))
{
return categories.Tables[0].Rows[0];
}
}

// delete the record identified by the specified ID
public bool Delete(int category_id)
{
int numAffected;

// create the parameter
SqlParameter[] parameters = { new SqlParameter("@category_id", SqlDbType.Int, 4) };
parameters[0].Value = category_id;

RunProcedure("DeleteCategory", parameters, out numAffected);

return (numAffected == 1);
}

// update Name, Description and ImageUrl of the record identified by the specified ID
public bool Update(int category_id, string name, string category_intro)
{
int numAffected;

// create the parameters
SqlParameter[] parameters = {
new SqlParameter("@category_id", SqlDbType.Int, 4),
new SqlParameter("@name", SqlDbType.NVarChar, 50),
new SqlParameter("@category_intro", SqlDbType.NVarChar, 100),
};
// set the values
parameters[0].Value = category_id;
parameters[1].Value = name.Trim();
parameters[2].Value = category_intro.Trim();

RunProcedure("UpdateCategory", parameters, out numAffected);

return (numAffected == 1);
}


// add a new category
public int Add(string name, string category_intro)
{
int numAffected;

// create the parameters
SqlParameter[] parameters = {
new SqlParameter("@name", SqlDbType.VarChar, 50),
new SqlParameter("@category_intro", SqlDbType.VarChar, 100),
new SqlParameter("@category_id", SqlDbType.Int, 4),
};

// set the values
parameters[0].Value = name.Trim();
parameters[1].Value = category_intro.Trim();
parameters[2].Direction = ParameterDirection.Output;

// run the procedure
RunProcedure("InsertCategory", parameters, out numAffected);

return (int)parameters[2].Value;
}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐