5.4 .Net操作存储过程

.Net操作存储过程

 

1 Model目录下新建三个.cs文件

-DB.cs:操作数据库存储过程

-Login.cs:登录操作

-TeamInfo.cs:获取团队信息

 

 

2 DB.cs

封装一个Execute函数操作存储过程

-sp_name:存储过程名字

-ls_param:存储过程输入参数

-ls_outParam:存储过程输出参数

 

代码如下:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Data;

using System.Data.SqlClient;

using System.Configuration;

namespace TeamManager.Models

{

    public class DB

    {

        private string _connString = ConfigurationManager.ConnectionStrings["teammanger"].ToString();

        public DataSet Execute(string sp_name, Dictionary<string, object> ls_param, Dictionary<string, object> ls_outParam = null)

        {

            using (SqlConnection conn = new SqlConnection(_connString))

            {

                if(conn.State != ConnectionState.Open)conn.Open();

                SqlCommand command = conn.CreateCommand();

                command.CommandType = CommandType.StoredProcedure;

                command.CommandTimeout = 10;

                command.CommandText = sp_name;

                if (null != ls_param)

                {

                    foreach (var param in ls_param)

                    {

                        string key = param.Key.IndexOf('@') == 0 ? param.Key : "@" + param.Key;

                        command.Parameters.Add(new SqlParameter(key, param.Value));

                    }

                }

                if (null != ls_outParam)

                {

                    foreach (var param in ls_outParam)

                    {

                        string key = param.Key.IndexOf('@') == 0 ? param.Key : "@" + param.Key;

                        var p = new SqlParameter(key, param.Value);

                        p.Direction = ParameterDirection.Output;

                        command.Parameters.Add(p);

                    }

                }

                DataSet set = new DataSet();

                var adp = new SqlDataAdapter((SqlCommand)command);

                adp.Fill(set);

                if (null != ls_outParam)

                {

                    Dictionary<string, object> temp = new Dictionary<string, object>();

                    foreach (var key in ls_outParam.Keys)

                    {

                        string pkey = key.IndexOf('@') == 0 ? key : "@" + key;

                        temp.Add(key, command.Parameters[pkey].Value);

                    }

                    foreach (var key in temp.Keys)

                    {

                        ls_outParam[key] = temp[key];

                    }

                }

                return set;

            }

        }

    }

}

 

 

3 Login.cs

传入用户名和密码,能找到对应的用户则登录成功

代码如下:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

namespace TeamManager.Models

{

    public class LoginService

    {

        static public bool Login(string uid, string pwd)

        {

            DB db = new DB();

            var set = db.Execute("sp_getUser", new Dictionary<string,object>(){

                {"uid", uid},

                {"pwd", pwd}

            }).Tables[0];

            if (null == set.Rows || set.Rows.Count <= 0) return false;

            return null != set.Rows[0];

        }

    }

}

 

 

4 TeamInfo.cs

分页获取团队信息

代码如下:

using System;

using System.Collections.Generic;

using System.Data;

using System.Linq;

using System.Web;

namespace TeamManager.Models

{

    public class TeamInfo

    {

        public List<TeamInfoItem> Data{get;set;}

        public int Page{get;set;}

        public int LastPage{get;set;}

        public int PageSize{get;set;}

    }

    public class TeamInfoItem

    {

        public string Name{get;set;}

        public string Tel{get;set;}

        public string Number{get;set;}

    }

    public class TeamInfoService

    {

        static public TeamInfo GetPage(int page)

        {

            TeamInfo result = new TeamInfo();

            result.Page = page;

            result.PageSize = 10;

            result.LastPage = 0;

            DB db = new DB();

            var outParam = new Dictionary<string, object>()

            {

                {"lastPage", result.LastPage}

            };

            var data = db.Execute("sp_getPageTeamInfo",

                new Dictionary<string, object>()

                {

                    {"page", result.Page},

                    {"pageSize", result.PageSize}

                },

                outParam

            );

             

            if (data.Tables[0].Rows.Count <= 0)

            {

                result.Data = null;

                return result;

            }

            result.LastPage = Convert.ToInt32(outParam["lastPage"]);

            result.Data = new List<TeamInfoItem>();

            foreach (DataRow item in data.Tables[0].Rows)

            {

                result.Data.Add(new TeamInfoItem() {

                    Name = item["name"].ToString(),

                    Number = item["number"].ToString(),

                    Tel = item["tel"].ToString()

                });

            }

            return result;

        }

    }

}

 

5 在web.config中添加数据库连接字符串

<connectionStrings>

    <add name="teammanger" connectionString="Server=127.0.0.1;User ID=sa;Password=tonyrlh123;Database=TeamManager;Persist Security Info=True;Pooling=true;Max Pool Size=600"/>

  </connectionStrings>

posted on 2013-11-28 20:55  CodeSchool官方博客  阅读(258)  评论(0)    收藏  举报