前面说如果不止是两个参数,而是三、五个参数,修改起来很是麻烦。这里给出一种解决办法。
在原来的解决方案中,添加一个项目,ToEmail.Common类库,方法和前面介绍的一样。看看ToEmail.Common的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ToEmail.Common
{
public class UsersCommon
{
string name;
string pwd;
public string Name
{
get { return name; }
set { name = value; }
}
public string Pwd
{
get { return pwd; }
set { pwd = value; }
}
}
}
将这两个参数单独提取出来,放到Common单独的独立类库中,公共类库,这样传递的是对象类型。这个公共类是用户实体类,如果还要添加其他的参数,直接修改这个类库即可。再看看其他模块的代码:
ToEmail.DataAccess:
先添加引用,引用ToEmail.Common
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
namespace ToEmail.DataAccess
{
public class UserDataAccess
{
SqlConnection Conn;
SqlDataAdapter UserDa;
public UserDataAccess()
{
Conn = new SqlConnection("server=(local);database=Sales;user id=sa;pwd=123456");
}
public DataSet UserLogion(ToEmail.Common.UsersCommon Users)
{
DataSet UserDs = new DataSet();
string sql = "select * from Login_Info where UserName=@UserName and UserPwd=@UserPwd";
UserDa = new SqlDataAdapter();
UserDa.SelectCommand = new SqlCommand(sql, Conn);
UserDa.SelectCommand.Parameters.Add(new SqlParameter("@UserName", SqlDbType.NVarChar, 50));
UserDa.SelectCommand.Parameters["@UserName"].Value = Users.Name ;
UserDa.SelectCommand.Parameters.Add(new SqlParameter("@UserPwd", SqlDbType.NVarChar, 50));
UserDa.SelectCommand.Parameters["@UserPwd"].Value =Users.Pwd ;
UserDa.Fill(UserDs);
return UserDs;
}
}
}
这里实例出一个Users,传递是Users.Name,Users.Pwd。
ToEmail.Rule:
添加引用,引用ToEmail.Common
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using ToEmail.DataSql;
namespace ToEmail.Rule
{
public class UserRules
{
ToEmail.DataAccess.UserDataAccess Uda = new ToEmail.DataAccess.UserDataAccess();
public bool CheckUser(ToEmail.Common.UsersCommon Users)
{
DataSet Uds = Uda.UserLogion(Users);
if (Uds.Tables[0].Rows.Count > 0)
{
return true;
}
return false;
}
}
}
实例出一个Users,传递Users
客户端代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace ToEmailDemo02
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnSubmit_Click(object sender, EventArgs e)
{
ToEmail.Rule.UserRules Urule = new ToEmail.Rule.UserRules();
ToEmail.Common.UsersCommon Uc = new ToEmail.Common.UsersCommon();
Uc.Name = txtName.Text.Trim();
Uc.Pwd = txtPwd.Text.Trim();
if (Urule.CheckUser(Uc))
{
lblMsg .Text ="登入成功";
}
else
{
lblMsg.Text = "登入失败";
}
}
}
}
实例出一个Uc,传递Uc
这样,如果需要在添加几个参数,规则层ToEmail.Rule就不用改动。只需在Common中添加字段,修改数据访问层即可。这样实现了高可扩展性。