好久没写博客了,更新一下吧!
三层架构学习,一直觉得太麻烦了,几行代码能写出来的,硬是绕一大圈。不过学了一点软件工程和UML,还是硬着头皮学下去。
上图是数据 库,下面写三层代码。
Model模型层,但他不算在三层结构中,用于传递数据。
class T_Seats
{
private int id;
private string username;
private string password;
public int Id
{
get
{
return id;
}
set
{
id = value;
}
}
public string UserName
{
get
{
return username;
}
set
{
username = value;
}
}
public string Password
{
get
{
return password;
}
set
{
password=value;
}
}
}
定义了属性和字段。
数据访问层(表的功能实现)
sqlhelper类 公用代码。
class SqlHelper
{
public static readonly string connstr =
ConfigurationManager.ConnectionStrings["username"].ConnectionString;
public static int ExecuteNonQuery(string cmdText,
params SqlParameter[] parameters)
{
using (SqlConnection conn = new SqlConnection(connstr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = cmdText;
cmd.Parameters.AddRange(parameters);
return cmd.ExecuteNonQuery();
}
}
}
public static object ExecuteScalar(string cmdText,
params SqlParameter[] parameters)
{
using (SqlConnection conn = new SqlConnection(connstr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = cmdText;
cmd.Parameters.AddRange(parameters);
return cmd.ExecuteScalar();
}
}
}
public static DataTable ExecuteDataTable(string cmdText,
params SqlParameter[] parameters)
{
using (SqlConnection conn = new SqlConnection(connstr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = cmdText;
cmd.Parameters.AddRange(parameters);
using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))
{
DataTable dt = new DataTable();
adapter.Fill(dt);
return dt;
}
}
}
}
public static SqlDataReader ExecuteDataReader(string cmdText,
params SqlParameter[] parameters)
{
SqlConnection conn = new SqlConnection(connstr);
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = cmdText;
cmd.Parameters.AddRange(parameters);
return cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
}
}
T_Seats表类,用于实现一个表的增、删、改、查的数据库代码
class T_SeatsDAL
{
public T_Seats getusername(string str)
{
DataTable dt = SqlHelper.ExecuteDataTable("select * from T_Seats where UserName=@username", new SqlParameter("@username", str));
if (dt.Rows.Count <= 0)
{
return null;
}
else if (dt.Rows.Count == 1)
{
DataRow dr = dt.Rows[0];
return ToModel(dr);
}
else
{
throw new Exception("出现重复的用户名");
}
}
public int AddNew(T_Seats model)
{
string sql = "insert into T_Seats(UserName,Password) output inserted.id values(@UserName,@Password)";
int id = (int)SqlHelper.ExecuteScalar(sql
,new SqlParameter("UserName", model.UserName)
, new SqlParameter("Password", model.Password)
);
return id;
}
public bool Update(T_Seats model)
{
string sql = "update T_Seats set UserName=@UserName,Password=@Password where id=@id";
int rows = SqlHelper.ExecuteNonQuery(sql
, new SqlParameter("Id", model.Id)
, new SqlParameter("UserName", model.UserName)
, new SqlParameter("Password", model.Password)
);
return rows > 0;
}
public bool Delete(int id)
{
int rows = SqlHelper.ExecuteNonQuery("delete from T_Seats where id=@id",
new SqlParameter("id", id));
return rows > 0;
}
private static T_Seats ToModel(DataRow row)
{
T_Seats model = new T_Seats();
model.Id = (System.Int32)row["Id"];
model.UserName = (System.String)row["UserName"];
model.Password = (System.String)row["Password"];
return model;
}
public T_Seats Get(int id)
{
DataTable dt = SqlHelper.ExecuteDataTable("select * from T_Seats where id=@id",
new SqlParameter("id", id));
if (dt.Rows.Count > 1)
{ throw new Exception("more than 1 row was found"); }
if (dt.Rows.Count <= 0) { return null; }
DataRow row = dt.Rows[0];
T_Seats model = ToModel(row);
return model;
}
public IEnumerable<T_Seats> ListAll()
{
List<T_Seats> list = new List<T_Seats>();
DataTable dt = SqlHelper.ExecuteDataTable("select * from T_Seats");
foreach (DataRow row in dt.Rows)
{
list.Add(ToModel(row));
}
return list;
}
}
业务逻辑层(不能出现数据库代码和system.data下的东西)
partial class T_SeatsBLL
{
//查找用户名
public bool validateusername(string a,string password)
{
T_Seats ts = new T_Seats();
T_SeatsDAL td=new T_SeatsDAL();
ts = td.getusername(a);
if (ts == null)
{
return false;
}
else if(ts.Password==password)
{
return true;
}
return false;
}
//添加数据行
public int AddNew(T_Seats model)
{
return new T_SeatsDAL().AddNew(model);
}
//删除数据行
public bool Delete(int id)
{
return new T_SeatsDAL().Delete(id);
}
//更新数据行
public bool Update(T_Seats model)
{
return new T_SeatsDAL().Update(model);
}
public T_Seats Get(int id)
{
return new T_SeatsDAL().Get(id);
}
public IEnumerable<T_Seats>ListAll()
{
return new T_SeatsDAL().ListAll();
}
}