补充数据层处理参数~~
public ExecState Exec(DAL.SqlClient.SqlParametersAll.SqlText commandText object[] ParameterValue)
{
//---装参数
if (ParameterValue != null)
{ sqlCommand.Parameters.AddRange(LiuJia.DAL.SqlClient.SqlParametersAll.GetSqlParameter(commandText, ParameterValue));
}
--------------------在昨天的程序中加入这么一句处理参数~~
}
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;
/// <summary>
/// SqlParametersAll 的摘要说明
/// </summary>
///
namespace LiuJia.DAL.SqlClient
{
/// <summary>
/// 程序中用到的所有参数道集合
/// </summary>
public static class SqlParametersAll
{
/// <summary>
/// 缓冲对象
/// </summary>
private static System.Collections.Generic.Dictionary<string, System.Data.SqlClient.SqlParameter[]> Currnet = new System.Collections.Generic.Dictionary<string, System.Data.SqlClient.SqlParameter[]>();
static SqlParametersAll()
{
//初始化文章的参数
InstanceArticlesSelect();
//--初始化插入文章的参数
InstanceArticle_Insert();
}
// @Choose int,---选择操作-0-全部,1察看指定类别的,2,察看指定UserId,3是检索指定标题的
//@Id int,--根据逻辑不同而代表不同的含义-1察看指定类别的,2,察看指定UserId,
//@SearchText varchar(max),--在3的情况下有座用-代表指定标题
//@MaxDate datetime,--4用的参数大于某个日期
//@MinDate dateTime --4用的参数小于某个日期
/// <summary>
/// 初始化检索文章的字参数
/// </summary>
private static void InstanceArticlesSelect()
{
System.Data.SqlClient.SqlParameter[] ArticlesParameter=new System.Data.SqlClient.SqlParameter[5];
ArticlesParameter[0] = new System.Data.SqlClient.SqlParameter("@Choose", SqlDbType.Int);
ArticlesParameter[1] = new System.Data.SqlClient.SqlParameter("@Id", SqlDbType.Int);
ArticlesParameter[2] = new System.Data.SqlClient.SqlParameter("@SearchText", SqlDbType.VarChar,300);
ArticlesParameter[3] = new System.Data.SqlClient.SqlParameter("@MaxDate", SqlDbType.DateTime);
ArticlesParameter[4] = new System.Data.SqlClient.SqlParameter("@MinDate", SqlDbType.DateTime);
SqlParametersAll.Currnet.Add("Article_Select_all", ArticlesParameter);
}
/// <summary>
/// 初始化插入,或者更新的存储过程-当插入的标题存在,并且插入的作者是原来的作者则可以更改
/// </summary>
private static void InstanceArticle_Insert()
{
// alter PRocedure Article_Insert
//@Title varchar(max),
//@CategoryId int ,
//@UserId int,
//@ContentMy varchar(max),
//@IsTrue varchar(max) output
System.Data.SqlClient.SqlParameter[] ArticlesParameter=new System.Data.SqlClient.SqlParameter[5];
ArticlesParameter[0] = new System.Data.SqlClient.SqlParameter("@Title", SqlDbType.VarChar, 300);
ArticlesParameter[1] = new System.Data.SqlClient.SqlParameter("@CategoryId", SqlDbType.Int);
ArticlesParameter[2] = new System.Data.SqlClient.SqlParameter("@UserId", SqlDbType.Int);
ArticlesParameter[3] = new System.Data.SqlClient.SqlParameter("@ContentMy", SqlDbType.VarChar,3000);
ArticlesParameter[4] = new System.Data.SqlClient.SqlParameter("@IsTrue ", SqlDbType.VarChar,100);
ArticlesParameter[4].Direction = ParameterDirection.Output;
SqlParametersAll.Currnet.Add("Article_Insert", ArticlesParameter);
}
/// <summary>
///
/// </summary>
/// <param name="whatText">SqlText是枚举,用枚举为了提高准确性哈哈哈~~I like</param>
/// <param name="ParameterValue">给得到的参数数组复加数值</param>
/// <returns></returns>
public static System.Data.SqlClient.SqlParameter[] GetSqlParameter(SqlText whatText,object[] ParameterValue)
{
//将枚举转化为相应的字符串咯
string tempText= Enum.GetName(typeof(SqlText),whatText);
//--察看有没有指定的Key不存在就实例华
if (!SqlParametersAll.Currnet.ContainsKey(tempText))
{
//看看用户需要的那种参数不存在初始化他
switch (whatText)
{
case SqlText.Article_Select_all://初始化检索文章的参数集合
SqlParametersAll.InstanceArticlesSelect();
break;
case SqlText.Article_Insert:
SqlParametersAll.InstanceArticle_Insert();
break;
default:
break;
}
}
//-----------------浅层拷贝
return SqlParametersAll.CloneParameters(SqlParametersAll.Currnet[tempText], ParameterValue);
}
/// <summary>
/// 浅层拷贝,和给参数符值一起做了 ——~~艾懒的分开~~效率第一阿
/// </summary>
/// <param name="originalParameters">要拷贝的对象</param>
/// <param name="ParameterValue">要给参数复加的 ----值</param>
/// <returns></returns>
private static System.Data.SqlClient.SqlParameter[] CloneParameters(System.Data.SqlClient.SqlParameter[] originalParameters, object[] ParameterValue)
{
//originalParameters.Length==ParameterValue.Length,所以可以采用考贝后---------复制数据的方式
//至于2者的长度不必担心,因为ParameterValue在数入的时候严格检测,同时originalParameters也是严格检测咯
System.Data.SqlClient.SqlParameter[] clonedParameters = new System.Data.SqlClient.SqlParameter[originalParameters.Length];
for (int i = 0, j = originalParameters.Length; i < j; i++)
{
//----复制构造函数,以便使用当前实例的值初始化Parameter 类的新实例。
clonedParameters[i] = (System.Data.SqlClient.SqlParameter)((ICloneable)originalParameters[i]).Clone();
//--------------------------给新的实例复加数据
clonedParameters[i].Value = ParameterValue[i];
}
return clonedParameters;
}
//------------------------要添加新的存储过程,存储过程如果有参数请你该这里,添加存储过程的名字在下面,以及添加一个初始化的方法
/// <summary>
/// 用来检索参数的名称
/// </summary>
public enum SqlText
{
/// <summary>
/// 查询文章用的参数检索的Key
/// </summary>
Article_Select_all,
/// <summary>
/// 插入或者更新文章
/// </summary>
Article_Insert
}
}
}
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;
/// <summary>
/// SqlParametersAll 的摘要说明
/// </summary>
///
namespace LiuJia.DAL.SqlClient
{
/// <summary>
/// 程序中用到的所有参数道集合
/// </summary>
public static class SqlParametersAll
{
/// <summary>
/// 缓冲对象
/// </summary>
private static System.Collections.Generic.Dictionary<string, System.Data.SqlClient.SqlParameter[]> Currnet = new System.Collections.Generic.Dictionary<string, System.Data.SqlClient.SqlParameter[]>();
static SqlParametersAll()
{
//初始化文章的参数
InstanceArticlesSelect();
//--初始化插入文章的参数
InstanceArticle_Insert();
}
// @Choose int,---选择操作-0-全部,1察看指定类别的,2,察看指定UserId,3是检索指定标题的
//@Id int,--根据逻辑不同而代表不同的含义-1察看指定类别的,2,察看指定UserId,
//@SearchText varchar(max),--在3的情况下有座用-代表指定标题
//@MaxDate datetime,--4用的参数大于某个日期
//@MinDate dateTime --4用的参数小于某个日期
/// <summary>
/// 初始化检索文章的字参数
/// </summary>
private static void InstanceArticlesSelect()
{
System.Data.SqlClient.SqlParameter[] ArticlesParameter=new System.Data.SqlClient.SqlParameter[5];
ArticlesParameter[0] = new System.Data.SqlClient.SqlParameter("@Choose", SqlDbType.Int);
ArticlesParameter[1] = new System.Data.SqlClient.SqlParameter("@Id", SqlDbType.Int);
ArticlesParameter[2] = new System.Data.SqlClient.SqlParameter("@SearchText", SqlDbType.VarChar,300);
ArticlesParameter[3] = new System.Data.SqlClient.SqlParameter("@MaxDate", SqlDbType.DateTime);
ArticlesParameter[4] = new System.Data.SqlClient.SqlParameter("@MinDate", SqlDbType.DateTime);
SqlParametersAll.Currnet.Add("Article_Select_all", ArticlesParameter);
}
/// <summary>
/// 初始化插入,或者更新的存储过程-当插入的标题存在,并且插入的作者是原来的作者则可以更改
/// </summary>
private static void InstanceArticle_Insert()
{
// alter PRocedure Article_Insert
//@Title varchar(max),
//@CategoryId int ,
//@UserId int,
//@ContentMy varchar(max),
//@IsTrue varchar(max) output
System.Data.SqlClient.SqlParameter[] ArticlesParameter=new System.Data.SqlClient.SqlParameter[5];
ArticlesParameter[0] = new System.Data.SqlClient.SqlParameter("@Title", SqlDbType.VarChar, 300);
ArticlesParameter[1] = new System.Data.SqlClient.SqlParameter("@CategoryId", SqlDbType.Int);
ArticlesParameter[2] = new System.Data.SqlClient.SqlParameter("@UserId", SqlDbType.Int);
ArticlesParameter[3] = new System.Data.SqlClient.SqlParameter("@ContentMy", SqlDbType.VarChar,3000);
ArticlesParameter[4] = new System.Data.SqlClient.SqlParameter("@IsTrue ", SqlDbType.VarChar,100);
ArticlesParameter[4].Direction = ParameterDirection.Output;
SqlParametersAll.Currnet.Add("Article_Insert", ArticlesParameter);
}
/// <summary>
///
/// </summary>
/// <param name="whatText">SqlText是枚举,用枚举为了提高准确性哈哈哈~~I like</param>
/// <param name="ParameterValue">给得到的参数数组复加数值</param>
/// <returns></returns>
public static System.Data.SqlClient.SqlParameter[] GetSqlParameter(SqlText whatText,object[] ParameterValue)
{
//将枚举转化为相应的字符串咯
string tempText= Enum.GetName(typeof(SqlText),whatText);
//--察看有没有指定的Key不存在就实例华
if (!SqlParametersAll.Currnet.ContainsKey(tempText))
{
//看看用户需要的那种参数不存在初始化他
switch (whatText)
{
case SqlText.Article_Select_all://初始化检索文章的参数集合
SqlParametersAll.InstanceArticlesSelect();
break;
case SqlText.Article_Insert:
SqlParametersAll.InstanceArticle_Insert();
break;
default:
break;
}
}
//-----------------浅层拷贝
return SqlParametersAll.CloneParameters(SqlParametersAll.Currnet[tempText], ParameterValue);
}
/// <summary>
/// 浅层拷贝,和给参数符值一起做了 ——~~艾懒的分开~~效率第一阿
/// </summary>
/// <param name="originalParameters">要拷贝的对象</param>
/// <param name="ParameterValue">要给参数复加的 ----值</param>
/// <returns></returns>
private static System.Data.SqlClient.SqlParameter[] CloneParameters(System.Data.SqlClient.SqlParameter[] originalParameters, object[] ParameterValue)
{
//originalParameters.Length==ParameterValue.Length,所以可以采用考贝后---------复制数据的方式
//至于2者的长度不必担心,因为ParameterValue在数入的时候严格检测,同时originalParameters也是严格检测咯
System.Data.SqlClient.SqlParameter[] clonedParameters = new System.Data.SqlClient.SqlParameter[originalParameters.Length];
for (int i = 0, j = originalParameters.Length; i < j; i++)
{
//----复制构造函数,以便使用当前实例的值初始化Parameter 类的新实例。
clonedParameters[i] = (System.Data.SqlClient.SqlParameter)((ICloneable)originalParameters[i]).Clone();
//--------------------------给新的实例复加数据
clonedParameters[i].Value = ParameterValue[i];
}
return clonedParameters;
}
//------------------------要添加新的存储过程,存储过程如果有参数请你该这里,添加存储过程的名字在下面,以及添加一个初始化的方法
/// <summary>
/// 用来检索参数的名称
/// </summary>
public enum SqlText
{
/// <summary>
/// 查询文章用的参数检索的Key
/// </summary>
Article_Select_all,
/// <summary>
/// 插入或者更新文章
/// </summary>
Article_Insert
}
}
}