版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36361038/article/details/82147486
一、创建一条存储语句:下面这条存储语句是用于分页的存储过程,创建完后执行就会生成相应的存储名P_LoadPageData
create Proc P_LoadPageData
--参数
@pageIndex int,
@pageSize int,
@total int out
as
--代码
select TOP(@pageSize)* FROM FBase_User WHERE Id not IN
(
SELECT TOP((@pageIndex-1)*@pageSize) Id FROM FBase_User ORDER BY Id
)
ORDER BY Id
SELECT @total=COUNT('a') FROM FBase_User
执行创建成功后会出现这样的结果:
二、执行下面的语句
DECLARE @total INT
EXEC P_LoadPageData 2,2,@total out
PRINT @total
输出结果如下:
表明创建成功!
三、在C#DAL层中执行使用刚才创建的存储语句
public class FBase_UserDA
{
//分页查询存储过程
public static List<FBase_User> LoadPageData(int pageIndex,int pageSize,out int total)
{
DataSet dataSet = new DataSet();
SqlParameter totalParameter = new SqlParameter("@total", SqlDbType.Int);
totalParameter.Direction = ParameterDirection.Output;
using (SqlConnection conn=new SqlConnection(DbHelperSQL.connectionString))
{
//conn.Open();
using (SqlDataAdapter adapter = new SqlDataAdapter("P_LoadPageData", conn))
{
adapter.SelectCommand.Parameters.Add(new SqlParameter("@pageIndex",pageIndex));
adapter.SelectCommand.Parameters.Add(new SqlParameter("@pageSize", pageSize));
//注意在使用的存储过程的时候必须声明 CommandType这个类型为存储过程名称
adapter.SelectCommand.CommandType = CommandType.StoredProcedure;
//输出参数打用法
adapter.SelectCommand.Parameters.Add(totalParameter);
adapter.Fill(dataSet);
}
}
total=(int)totalParameter.Value;
return DataTableToList(dataSet.Tables[0]);
}
/// <summary>
/// 获得数据列表
/// </summary>
public static List<FBase_User> DataTableToList(DataTable dt)
{
List<FBase_User> modelList = new List<FBase_User>();
int rowsCount = dt.Rows.Count;
if (rowsCount > 0)
{
FBase_User model;
for (int n = 0; n < rowsCount; n++)
{
model = DataRowToModel(dt.Rows[n]);
if (model != null)
{
modelList.Add(model);
}
}
}
return modelList;
}
/// <summary>
/// 得到一个对象实体
/// </summary>
public static FBase_User DataRowToModel(DataRow row)
{
FBase_User model = new FBase_User();
if (row != null)
{
if (row["Id"] != null && row["Id"].ToString() != "")
{
model.Id = int.Parse(row["Id"].ToString());
}
if (row["Name"] != null)
{
model.Name = row["Name"].ToString();
}
if (row["Password"] != null)
{
model.Password = row["Password"].ToString();
}
}
return model;
}
}
上面使用到DbHelperSQL.connectionString这个,这儿申明下这是用来获取web.config中数据库的链接的字符串,方法声明如下:
/// <summary>
/// 获取连接字符串
/// </summary>
public static string ConnectionString
{
get
{
string _connectionString = ConfigurationManager.AppSettings["ConnectionString"];
string ConStringEncrypt = ConfigurationManager.AppSettings["ConStringEncrypt"];
if (ConStringEncrypt == "true")
{
_connectionString = DESEncrypt.Decrypt(_connectionString);
}
return _connectionString;
}
}
web.config中的配置如下:
<appSettings>
<!-- 连接字符串是否加密 -->
<add key="ConStringEncrypt" value="false"/>
<!-- 数据库连接字符串,(如果采用加密方式,上面一项要设置为true;加密工具,可在官方下载,
如果使用明文这样server=127.0.0.1;database=.....,上面则设置为false。 -->
<add key="ConnectionString" value="server=127.0.0.1;database=Demo;uid=sa;pwd=123456"/>
<!--虚拟目录名称(如果是站点,则为空) -->
<add key="VirtualPath" value=""/>
<!--登录页地址 -->
<add key="LoginPage" value="admin/Login.aspx"/>
<!--默认菜单是否是展开状态-->
<add key="MenuExpanded" value="false"/>
<!--实体对象内容缓村的时间(分钟)-->
<add key="ModelCache" value="30"/>
</appSettings>