DAO.NET使用存储过程

版权声明:本文为博主原创文章,未经博主允许不得转载。 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>

猜你喜欢

转载自blog.csdn.net/qq_36361038/article/details/82147486