在实际项目中,程序设计都有他的层次结构,比如MVC、MVP、普通的三层结构等等,不过现在用三层结构的相比可能少了,但是也有一些小型项目还是挺实用的
1.介绍
普通的三层架构(BLL,DAL,Model)
1)实体(Model),用来创建对象的实体;
2)业务逻辑层(BLL),用来处理复杂的数据间的关系或者是业务间的关系;
3)数据库访问层(DAL),用来用来访问数据库的;
当然还会有,View(视图层),用来展示数据;
2.三层结构例子
2.1创建数据库并创建一张测试表
这里我用的Mysql
/*
Navicat MySQL Data Transfer
Source Server : JiYFMySQL
Source Server Version : 50553
Source Host : localhost:3306
Source Database : testdemo
Target Server Type : MYSQL
Target Server Version : 50553
File Encoding : 65001
Date: 2019-01-26 11:06:05
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(8) NOT NULL,
`name` varchar(255) DEFAULT NULL,
`age` int(8) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('1', '燕子', '25');
INSERT INTO `user` VALUES ('2', 'lisi', '15');
INSERT INTO `user` VALUES ('3', 'wangwu', '15');
数据库表如下
2.2创建实体类
1 /// <summary> 2 /// user:实体类(属性说明自动提取数据库字段的描述信息) 3 /// </summary> 4 [Serializable] 5 public partial class user 6 { 7 public user() 8 {} 9 #region Model 10 private int _id; 11 private string _name; 12 private int? _age; 13 /// <summary> 14 /// 15 /// </summary> 16 public int id 17 { 18 set{ _id=value;} 19 get{return _id;} 20 } 21 /// <summary> 22 /// 23 /// </summary> 24 public string name 25 { 26 set{ _name=value;} 27 get{return _name;} 28 } 29 /// <summary> 30 /// 31 /// </summary> 32 public int? age 33 { 34 set{ _age=value;} 35 get{return _age;} 36 } 37 #endregion Model 38 39 }
2.3 DAL的User类设计
1 using System; 2 using System.Data; 3 using System.Text; 4 using MySql.Data.MySqlClient; 5 using Maticsoft.DBUtility; 6 using System.Data.SqlClient;//Please add references 7 namespace BenNH.DAL 8 { 9 /// <summary> 10 /// 数据访问类:user 11 /// </summary> 12 public partial class user 13 { 14 public user() 15 {} 16 #region BasicMethod 17 18 19 20 /// <summary> 21 /// 增加一条数据 22 /// </summary> 23 public bool Add(BenNH.Model.user model) 24 { 25 StringBuilder strSql=new StringBuilder(); 26 strSql.Append("insert into user("); 27 strSql.Append("id,name,age)"); 28 strSql.Append(" values ("); 29 strSql.Append("@id,@name,@age)"); 30 MySqlParameter[] parameters = { 31 new MySqlParameter("@id", MySqlDbType.Int32,8), 32 new MySqlParameter("@name", MySqlDbType.VarChar,255), 33 new MySqlParameter("@age", MySqlDbType.Int32,8)}; 34 parameters[0].Value = model.id; 35 parameters[1].Value = model.name; 36 parameters[2].Value = model.age; 37 38 int rows=DbHelperMySQL.ExecuteSql(strSql.ToString(),parameters); 39 if (rows > 0) 40 { 41 return true; 42 } 43 else 44 { 45 return false; 46 } 47 } 48 /// <summary> 49 /// 更新一条数据 50 /// </summary> 51 public bool Update(BenNH.Model.user model) 52 { 53 StringBuilder strSql = new StringBuilder(); 54 strSql.Append("update user set "); 55 strSql.Append("name=@name,"); 56 strSql.Append("age=@age"); 57 strSql.Append(" where id=@id "); 58 MySqlParameter[] parameters = { 59 new MySqlParameter("@name", MySqlDbType.VarChar,255), 60 new MySqlParameter("@age", MySqlDbType.Int32,8), 61 new MySqlParameter("@id", MySqlDbType.Int32,8)}; 62 parameters[0].Value = model.name; 63 parameters[1].Value = model.age; 64 parameters[2].Value = model.id; 65 66 int rows=DbHelperMySQL.ExecuteSql(strSql.ToString(),parameters); 67 if (rows > 0) 68 { 69 return true; 70 } 71 else 72 { 73 return false; 74 } 75 } 76 77 /// <summary> 78 /// 删除一条数据 79 /// </summary> 80 public bool Delete(long id) 81 { 82 //该表无主键信息,请自定义主键/条件字段 83 StringBuilder strSql=new StringBuilder(); 84 strSql.Append("delete from user "); 85 strSql.Append(" where id=@userID"); 86 MySqlParameter[] parameters = { 87 new MySqlParameter("@@userID", SqlDbType.BigInt) 88 }; 89 90 parameters[0].Value = id; 91 92 int rows=DbHelperMySQL.ExecuteSql(strSql.ToString(),parameters); 93 if (rows > 0) 94 { 95 return true; 96 } 97 else 98 { 99 return false; 100 } 101 } 102 103 104 /// <summary> 105 /// 得到一个对象实体 106 /// </summary> 107 public BenNH.Model.user GetModel() 108 { 109 //该表无主键信息,请自定义主键/条件字段 110 StringBuilder strSql=new StringBuilder(); 111 strSql.Append("select id,name,age from user "); 112 strSql.Append(" where "); 113 MySqlParameter[] parameters = { 114 }; 115 116 BenNH.Model.user model=new BenNH.Model.user(); 117 DataSet ds=DbHelperMySQL.Query(strSql.ToString(),parameters); 118 if(ds.Tables[0].Rows.Count>0) 119 { 120 return DataRowToModel(ds.Tables[0].Rows[0]); 121 } 122 else 123 { 124 return null; 125 } 126 } 127 128 129 /// <summary> 130 /// 得到一个对象实体 131 /// </summary> 132 public BenNH.Model.user DataRowToModel(DataRow row) 133 { 134 BenNH.Model.user model=new BenNH.Model.user(); 135 if (row != null) 136 { 137 if(row["id"]!=null && row["id"].ToString()!="") 138 { 139 model.id=int.Parse(row["id"].ToString()); 140 } 141 if(row["name"]!=null) 142 { 143 model.name=row["name"].ToString(); 144 } 145 if(row["age"]!=null && row["age"].ToString()!="") 146 { 147 model.age=int.Parse(row["age"].ToString()); 148 } 149 } 150 return model; 151 } 152 153 /// <summary> 154 /// 获得数据列表 155 /// </summary> 156 public DataSet GetList(string strWhere) 157 { 158 StringBuilder strSql=new StringBuilder(); 159 strSql.Append("select id,name,age "); 160 strSql.Append(" FROM user "); 161 if(strWhere.Trim()!="") 162 { 163 strSql.Append(" where "+strWhere); 164 } 165 return DbHelperMySQL.Query(strSql.ToString()); 166 } 167 168 /// <summary> 169 /// 获取记录总数 170 /// </summary> 171 public int GetRecordCount(string strWhere) 172 { 173 StringBuilder strSql=new StringBuilder(); 174 strSql.Append("select count(1) FROM user "); 175 if(strWhere.Trim()!="") 176 { 177 strSql.Append(" where "+strWhere); 178 } 179 object obj = DbHelperSQL.GetSingle(strSql.ToString()); 180 if (obj == null) 181 { 182 return 0; 183 } 184 else 185 { 186 return Convert.ToInt32(obj); 187 } 188 } 189 /// <summary> 190 /// 分页获取数据列表 191 /// </summary> 192 public DataSet GetListByPage(string strWhere, string orderby, int startIndex, int endIndex) 193 { 194 StringBuilder strSql=new StringBuilder(); 195 strSql.Append("SELECT * FROM ( "); 196 strSql.Append(" SELECT ROW_NUMBER() OVER ("); 197 if (!string.IsNullOrEmpty(orderby.Trim())) 198 { 199 strSql.Append("order by T." + orderby ); 200 } 201 else 202 { 203 strSql.Append("order by T. desc"); 204 } 205 strSql.Append(")AS Row, T.* from user T "); 206 if (!string.IsNullOrEmpty(strWhere.Trim())) 207 { 208 strSql.Append(" WHERE " + strWhere); 209 } 210 strSql.Append(" ) TT"); 211 strSql.AppendFormat(" WHERE TT.Row between {0} and {1}", startIndex, endIndex); 212 return DbHelperMySQL.Query(strSql.ToString()); 213 } 214 215 /* 216 /// <summary> 217 /// 分页获取数据列表 218 /// </summary> 219 public DataSet GetList(int PageSize,int PageIndex,string strWhere) 220 { 221 MySqlParameter[] parameters = { 222 new MySqlParameter("@tblName", MySqlDbType.VarChar, 255), 223 new MySqlParameter("@fldName", MySqlDbType.VarChar, 255), 224 new MySqlParameter("@PageSize", MySqlDbType.Int32), 225 new MySqlParameter("@PageIndex", MySqlDbType.Int32), 226 new MySqlParameter("@IsReCount", MySqlDbType.Bit), 227 new MySqlParameter("@OrderType", MySqlDbType.Bit), 228 new MySqlParameter("@strWhere", MySqlDbType.VarChar,1000), 229 }; 230 parameters[0].Value = "user"; 231 parameters[1].Value = ""; 232 parameters[2].Value = PageSize; 233 parameters[3].Value = PageIndex; 234 parameters[4].Value = 0; 235 parameters[5].Value = 0; 236 parameters[6].Value = strWhere; 237 return DbHelperMySQL.RunProcedure("UP_GetRecordByPage",parameters,"ds"); 238 }*/ 239 240 #endregion BasicMethod 241 #region ExtensionMethod 242 243 #endregion ExtensionMethod 244 } 245 }