代码展示 C#系列---①三层架构中各层次之间的调用( 二 )


DAL层 ①、类
namespace Login.DAL{public class UserDAO{public Login.Model.UserInfo SelectUser(string userName, string password){using (System.Data.SqlClient.SqlConnection conn = new SqlConnection(DbUtil.ConnString))//6步:实例化连接数据库字符串conn,using用来自动释放资源{SqlCommand cmd = conn.CreateCommand();//7步:创建一个关联的SqlCommand对象,此对象包含connection连接的;连接完成,此时可以对数据库进行操作了 。cmd.CommandText = @"SELECT * FROM Users WHERE UserName=@UserName AND Password=@Password"; //8步:查询数据库的SQL语句cmd.CommandType = System.Data.CommandType.Text;//CommandType是SqlCommand的一个属性,声明命令对象执行形式为文本cmd.Parameters.Add(new SqlParameter("@UserName", userName));//9步:添加参数到参数集,add里面的第一个参数是要添加的参数名,第二个参数是参数的数据类型.Parameters的作用就是把存储过程执行结束后得到的参数传到程序里cmd.Parameters.Add(new SqlParameter("@Password", password));conn.Open();//10步、打开数据控SqlDataReader reader = cmd.ExecuteReader();//11步、实例化SqlDataReader,用于从数据库中只读的方式读取数据Login.Model.UserInfo user = null;//12步、读取数据并返回查询结果:定义一个为null的UserInfo类型变量while (reader.Read())//Read是SqlDataReader的方法,将数据阅读器移到结果集的下一行并读取该行,返回值为bool类型{if (user == null)//如果没有user的信息,就实例化一个为空的UserInfo{user = new Login.Model.UserInfo();}user.ID = reader.GetInt32(0);//从数据库中读取并赋值给user,并转换为相应的数据类型user.UserName = reader.GetString(1);user.Password = reader.GetString(2);if (!reader.IsDBNull(3))//Email可以为空,IsDBNull为SqlDataReader的一个方法,返回bool类型,若数据为空则返回true,反之返回false{user.Email = reader.GetString(3);}}return user;//将user值返回到BLL层}}}}
②、类
namespace Login.DAL{public class ScoreDAO{public void UpdateScore(string userName, int value){using (SqlConnection conn = new SqlConnection(DbUtil.ConnString))//16步:实例化连接数据库字符串conn,using用来自动释放资源{SqlCommand cmd = conn.CreateCommand();//17步:创建一个关联的SqlCommand对象,此对象包含connection连接的;连接完成,此时可以对数据库进行操作了 。cmd.CommandText = @"INSERT INTO SCORES(ID,UserName,Score) Values(1,@UserName,@Score)";//18步:向scores表中添加一条记录cmd.Parameters.Add(new SqlParameter("@UserName", userName));//19步:添加参数到参数集,add里面的第一个参数是要添加的参数名,第二个参数是参数的数据类型.Parameters的作用就是把存储过程执行结束后得到的参数传到程序里cmd.Parameters.Add(new SqlParameter("@Score", value));conn.Open();//20步:打开资源cmd.ExecuteNonQuery();//21步:执行命令对象的SQL语句,返回一个int 类型的变量,返回数据库操作之后影响的行数;用来验证对数据库进行增删改的情况 。}} }}
③、类
namespace Login.DAL{class DbUtil{public static string ConnString = @"Server=ELSA\SQLS;Database=Login; User ID=sa;Password=123456";//连接数据库字符串,此处Server填写的是服务器的名称,Database是数据库中数据表的名称,UserID为数据库登录名称,Password为数据库登录密码}}
Model层
namespace Login.Model{publicclass UserInfo{public int ID { get; set; }public string UserName { get; set; }public string Password { get; set; }public string Email { get; set; }}}
三层架构代码逐步运行顺序图: