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>
code is my life. ——codeschool.cn
posted on 2013-11-28 20:55 CodeSchool官方博客 阅读(258) 评论(0) 收藏 举报
浙公网安备 33010602011771号