完成了三层登录,来跟大家分享下。
三层包括:1.UI(用户界面) 2.逻辑层 3. 数据访问层
下面是自己编写完成三层登录后画出的时序图,供大家参考!
具体代码:
BLL
public class LoginService
{
public Login.Model.userInfo userLogin(string userName, string passWord)
{
Login.DAL.UserDAO uDao = new Login.DAL.UserDAO();
Login.Model.userInfo user = uDao.SelectUser(userName, passWord);
if (user != null) //登陆成功
{
Login.DAL.ScoreDAO sDao = new Login.DAL.ScoreDAO();
sDao.UpdateScore(userName, 10);
return user;
}
else
{
throw new Exception( "登录失败");
}
DAL:.
class DbUtil
{
public static string ConnString = @"Server=.;Database = Login ;User ID = sa ;PassWord = 123456";
}
public void UpdateScore(string userName, int value)
{
using (SqlConnection conn = new SqlConnection(DbUtil.ConnString))
{
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = @" INSERT INTO SCORES (UserName,Score ) Values (@UserName,@Score)";
cmd.Parameters.Add(new SqlParameter("@UserName" ,userName));
cmd.Parameters.Add(new SqlParameter("@Score" , value));
conn.Open();
cmd.ExecuteNonQuery();
}
}
public class UserDAO
{
public Login.Model.userInfo SelectUser(string userName,string passWord)
{
using (SqlConnection conn = new SqlConnection(DbUtil.ConnString))
{
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = @"SELECT ID , UserName , PassWord ,Email FROM USERS WHERE UserName=@UserName AND PassWord=@PassWord";
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add(new SqlParameter("@UserName",userName));
cmd.Parameters.Add(new SqlParameter("@PassWord",passWord));
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
Login.Model.userInfo user = null;
while (reader.Read())
{
if (user == null)
{
user = new Login.Model.userInfo();
}
user.ID = reader.GetInt32(0);
user.UserName = reader.GetString(1);
user.PassWord = reader.GetString(2);
if (!reader.IsDBNull(3))
{
user.Email = reader.GetString(3);
}
}
return user;
}
}
}
UI :
private void btnLogin_Click(object sender, EventArgs e)
{
//IDbConnection conn = new SqlConnection("c......");
//IDbCommand cmd = conn.CreateCommand();
//cmd.CommandText = "Select UserName From USERS WHERE.... ";
//cmd.ExecuteReader();
try {
string userName = txtUserName.Text.Trim();
string passWord = txtPassWord.Text;
Login.BLL.LoginService LogSer = new Login.BLL.LoginService();
Login.Model.userInfo user = LogSer.userLogin(userName, passWord);
MessageBox.Show("登录用户:" + user.UserName);
}
catch(Exception ex )
{
MessageBox.Show(ex.Message);
}
}
总结
很典型的三层架构小例子,希望大家都用心试试,自己完成后逐语句调试下!