//***********************************************************************
//
// WebExpert.NET 1.0
//
// (c) 2003, www.AspCool.com. All rights reserved.
// ASP酷技术网 版权所有
//
// 该源码下载自:http://www.51aspx.com
// 邮箱:tim@aspcool.com
//
// 版权声明:本程序仅供学习使用,你也可以修改后在网站上使用,但使用时必
// 须保留ASP酷技术网(www.AspCool.com)的版权信息和链接。本程序随《ASP.NET
// 网站建设专家》一书赠送,未经作者同意,不得随意修改、传播。
//
// 描述:
// 此文件包含下面的类:
// ThreadsDB
//
// 作者: 王保健
// 时间: 2004-12-04
//
//************************************************************************
using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
namespace AspCool.WebExpert
{
public class ThreadsDB
{
# region 显示Thread内容
//*********************************************************************
//
// GetThreads 方法
//
// GetThreads 方法返回所有包含所有Thread信息的DataSet。
//
//*********************************************************************
private DataSet GetThreads()
{
// 创建一个数据库连接实例和命令对象。
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["connectionString"]);
SqlDataAdapter myCommand = new SqlDataAdapter("GetThreads", myConnection);
// 把命令对象的命令类型设置为存储过程。
myCommand.SelectCommand.CommandType = CommandType.StoredProcedure;
// 建立并填充一个DataSet。
DataSet myDataSet = new DataSet();
myCommand.Fill(myDataSet);
// 返回一个DataSet。
return myDataSet;
}
//*********************************************************************
//
// GetThreadsRecords 方法
//
// GetThreadsRecords 方法是用来计算Threads的总数。
//
//
//*********************************************************************
public int GetThreadsRecords()
{
// 创建一个数据库连接实例和命令对象。
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["connectionString"]);
SqlCommand myCommand = new SqlCommand("GetThreadsRecords", myConnection);
// 把命令对象的命令类型设置为存储过程
myCommand.CommandType = CommandType.StoredProcedure;
// 执行命令。
myConnection.Open();
SqlDataReader result = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
return (int)result["co"];
}
//*********************************************************************
//
// CurrentPageThreads 方法
//
// CurrentPageThreads 方法是用来从一个包含所有Thread的DataSet中返回一个只包含
// 当前页面的DataSet。
//
// 其中currentPage是指当前的页号,pageSize是指每页有多少条Thread,totalPage
// 用来返回总共有多少页Thread。
//
//*********************************************************************
public DataSet CurrentPageThreads(int currentPage,int pageSize,out int totalPage,out int records)
{
// 创建一个数据库连接实例和命令对象。
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["connectionString"]);
SqlDataAdapter myCommand = new SqlDataAdapter("GetThreads", myConnection);
// 把命令对象的命令类型设置为存储过程。
myCommand.SelectCommand.CommandType = CommandType.StoredProcedure;
// 建立并填充一个DataSet。
DataSet allThreads = new DataSet();
myCommand.Fill(allThreads);
// 创建一个新的DataSet。
DataSet dsCurrentThreads = new DataSet();
// 计算所有Thread的条数。
records = allThreads.Tables[0].Rows.Count;
// 计算当前页第一条Thread的位置。
int startIndex = (currentPage-1)*pageSize;
// 计算当前页最后一条Thread的位置。
int endIndex = startIndex + pageSize;
// 计算Thread的页数。
totalPage = records/pageSize;
if (totalPage*pageSize {
totalPage++;
}
if (endIndex>records)
endIndex = records;
// 建立一个与allThreads数据结构完全一样的DataSet.
dsCurrentThreads = allThreads.Clone();
// 取得当前页的所有记录,并保存到新的DataSet中去。
for (int i=startIndex; i {
DataRow row = dsCurrentThreads.Tables[0].NewRow();
row.ItemArray = allThreads.Tables[0].Rows[i].ItemArray;
dsCurrentThreads.Tables[0].Rows.Add(row);
}
// 返回当前页的DataSet。
return dsCurrentThreads;
}
//*********************************************************************
//
// ClickThread 方法
//
// ClickThread 是把Threads数据表中被访问的Thread的点击次数增加一。
//
//*********************************************************************
public void ClickThread(int ThreadID)
{
// 创建一个数据库连接实例和命令对象。
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["connectionString"]);
SqlCommand myCommand = new SqlCommand("ClickThread", myConnection);
// 把命令对象的命令类型设置为存储过程。
myCommand.CommandType = CommandType.StoredProcedure;
// 向存储过程中传递参数。
SqlParameter parameterThreadID = new SqlParameter("@ThreadID", SqlDbType.Int, 4);
parameterThreadID.Value = ThreadID;
myCommand.Parameters.Add(parameterThreadID);
// 打开数据库连接并执行命令。
myConnection.Open();
myCommand.ExecuteNonQuery();
myConnection.Close();
}
//*********************************************************************
//
// ReplyThread 方法
//
// ReplyThread 是把Threads数据表中被访问的Thread的回复次数增加一。
//
//*********************************************************************
public void ReplyThread(int ThreadID)
{
// 创建一个数据库连接实例和命令对象。
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["connectionString"]);
SqlCommand myCommand = new SqlCommand("ReplyThread", myConnection);
// 把命令对象的命令类型设置为存储过程。
myCommand.CommandType = CommandType.StoredProcedure;
// 向存储过程中传递参数。
SqlParameter parameterThreadID = new SqlParameter("@ThreadID", SqlDbType.Int, 4);
parameterThreadID.Value = ThreadID;
myCommand.Parameters.Add(parameterThreadID);
// 打开数据库连接并执行命令。
myConnection.Open();
myCommand.ExecuteNonQuery();
myConnection.Close();
}
//*********************************************************************
//
// GetSingleThread 方法
//
// GetSingleThread 方法是用来返回一条包含某条Thread记录的所有信息的SqlDataReader.
// itemId为这条Thread记录的编号。
//
//*********************************************************************
public SqlDataReader GetSingleThread(int ThreadId)
{
// 创建一个数据库连接实例和命令对象。
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["connectionString"]);
SqlCommand myCommand = new SqlCommand("GetSingleThread", myConnection);
// 把命令对象的命令类型设置为存储过程
myCommand.CommandType = CommandType.StoredProcedure;
// 向存储过程中传递参数。
SqlParameter parameterThreadId = new SqlParameter("@ThreadId", SqlDbType.Int, 4);
parameterThreadId.Value = ThreadId;
myCommand.Parameters.Add(parameterThreadId);
// 执行命令。
myConnection.Open();
SqlDataReader result = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
// 返回一个datareader。
return result;
}
# endregion
# region 增加、修改、删除Thread
//*********************************************************************
//
// AddThread 方法
//
// AddThread 方法在Threads表中增加一条新的Thread记录,此方法返回新增加的Thread的
// Thread编号。
//
//*********************************************************************
public void AddThread(System.Int32 threadID,System.String author,System.String subject,System.String content,System.Int32 reply,System.Int32 totalView)
{
// 创建一个数据库连接实例和命令对象。
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["connectionString"]);
SqlCommand myCommand = new SqlCommand("AddThread", myConnection);
// 把命令对象的命令类型设置为存储过程。
myCommand.CommandType = CommandType.StoredProcedure;
// 向存储过程中传递参数。
SqlParameter parameterAuthor = new SqlParameter("@author", SqlDbType.NVarChar,50);
parameterAuthor.Value = author;
myCommand.Parameters.Add(parameterAuthor);
SqlParameter parameterSubject = new SqlParameter("@subject", SqlDbType.NVarChar,50);
parameterSubject.Value = subject;
myCommand.Parameters.Add(parameterSubject);
SqlParameter parameterContent = new SqlParameter("@content", SqlDbType.NText,16);
parameterContent.Value = content;
myCommand.Parameters.Add(parameterContent);
SqlParameter parameterTotalView = new SqlParameter("@totalView", SqlDbType.Int,4);
parameterTotalView.Value = totalView;
myCommand.Parameters.Add(parameterTotalView);
SqlParameter parameterReply = new SqlParameter("@reply", SqlDbType.Int,4);
parameterReply.Value = reply;
myCommand.Parameters.Add(parameterReply);
// 打开数据库连接并执行命令。
myConnection.Open();
myCommand.ExecuteNonQuery();
myConnection.Close();
}
//*********************************************************************
//
// UpdateThreads 方法
//
// UpdateThreads 是用来根据Thread编号来更新Threads表中的一条Thread记录。
//
//*********************************************************************
public void UpdateThread(System.DateTime postTime,System.Int32 threadID,System.String author,System.String content,System.Int32 reply,System.String subject,System.Int32 totalView)
{
// 创建一个数据库连接实例和命令对象。
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["connectionString"]);
SqlCommand myCommand = new SqlCommand("UpdateThread", myConnection);
// 向存储过程中传递参数。
myCommand.CommandType = CommandType.StoredProcedure;
// 向存储过程中传递参数。
SqlParameter parameterItemID = new SqlParameter("@ItemID", SqlDbType.Int, 4);
parameterItemID.Direction = ParameterDirection.Output;
myCommand.Parameters.Add(parameterItemID);
SqlParameter parameterThreadID = new SqlParameter("@threadID", SqlDbType.Int,4);
parameterThreadID.Value = threadID;
myCommand.Parameters.Add(parameterThreadID);
SqlParameter parameterAuthor = new SqlParameter("@author", SqlDbType.NVarChar,50);
parameterAuthor.Value = author;
myCommand.Parameters.Add(parameterAuthor);
SqlParameter parameterSubject = new SqlParameter("@subject", SqlDbType.NVarChar,50);
parameterSubject.Value = subject;
myCommand.Parameters.Add(parameterSubject);
SqlParameter parameterContent = new SqlParameter("@content", SqlDbType.NText,16);
parameterContent.Value = content;
myCommand.Parameters.Add(parameterContent);
SqlParameter parameterPostTime = new SqlParameter("@postTime", SqlDbType.DateTime,8);
parameterPostTime.Value = postTime;
myCommand.Parameters.Add(parameterPostTime);
SqlParameter parameterTotalView = new SqlParameter("@totalView", SqlDbType.Int,4);
parameterTotalView.Value = totalView;
myCommand.Parameters.Add(parameterTotalView);
SqlParameter parameterReply = new SqlParameter("@reply", SqlDbType.Int,4);
parameterReply.Value = reply;
myCommand.Parameters.Add(parameterReply);
// 打开数据库连接并执行命令。
myConnection.Open();
myCommand.ExecuteNonQuery();
myConnection.Close();
}
//*********************************************************************
//
// DeleteThread 方法
//
// DeleteThread 方法是根据Thread编号删除一条Thread记录。
// itemID为要删除的Thread的编号。
//
//*********************************************************************
public void DeleteThread(int itemID)
{
// 创建一个数据库连接实例和命令对象。
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["connectionString"]);
SqlCommand myCommand = new SqlCommand("DeleteThread", myConnection);
// 把命令对象的命令类型设置为存储过程。
myCommand.CommandType = CommandType.StoredProcedure;
// 向存储过程中传递参数。
SqlParameter parameterItemID = new SqlParameter("@ItemID", SqlDbType.Int, 4);
parameterItemID.Value = itemID;
myCommand.Parameters.Add(parameterItemID);
// 打开数据库连接并执行命令。
myConnection.Open();
myCommand.ExecuteNonQuery();
myConnection.Close();
}
# endregion
}
}