基于三层架构项目下的Ado【六】
一、基于三层架构项目下的Ado增删改查总结,提示:现在一般都是使用EF框架操作。
1. 先在model层创建出一个和你将会查询出一样类型的表,比如你将查询出的有五个字段,那么你就需要创建出一个和你查询出的对象一样五个字段的类。大致如下:
1 { 2 3 public class UserInfo 4 { 5 public int Id { get; set; } 6 public string UserName { get; set; } 7 public string UserPass { get; set; } 8 public DateTime RegTime { get; set; } 9 public string Email { get; set; } 10 } 11 }
2.1 . 在DAL(数据层) 新建类Sqlhelper用来查询数据,将查询出的数据暂时放在datatable中,但是前端不能解析datatable数据。因为该段代码是重复的,所以需要这样封装起来,直接看代码:
1 private static readonly string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString; 2 /// <summary> 3 /// 用来查询数据,将查询出的数据暂时放在datatable中,但是前端不能解析datatable数据 4 /// </summary> 5 /// <param name="sql">查询语句</param> 6 /// <param name="type">类型</param> 7 /// <param name="pars">需要传递的参数</param> 8 /// <returns></returns> 9 public static DataTable GetDataTable(string sql,CommandType type,params SqlParameter[]pars) 10 { 11 using (SqlConnection conn = new SqlConnection(connStr)) 12 { 13 using (SqlDataAdapter apter = new SqlDataAdapter(sql, conn)) 14 { 15 if (pars != null) 16 { 17 apter.SelectCommand.Parameters.AddRange(pars); 18 } 19 apter.SelectCommand.CommandType = type; 20 DataTable da = new DataTable(); 21 apter.Fill(da); 22 return da; 23 } 24 } 25 }
2.2 对datatable进行解析,并且执行以下操作,其实就是分为带参数的和不带参数的。其余只是把查询语句换一下即可
不带参数的查:
1 public List<UserInfo> GetList() 2 { 3 string sql = "select * from UserInfo"; 4 DataTable da = SqlHelper.GetDataTable(sql, CommandType.Text); 5 List<UserInfo> list = null; 6 if (da.Rows.Count > 0) 7 { 8 list = new List<UserInfo>(); 9 UserInfo userInfo = null; 10 foreach (DataRow row in da.Rows) 11 { 12 userInfo = new UserInfo(); 13 LoadEntity(userInfo, row); 14 list.Add(userInfo); 15 } 16 } 17 return list; 18 }
带参数的查:
1 public int AddUserInfo(UserInfo userInfo) 2 { 3 string sql = "insert into UserInfo(UserName,UserPass,RegTime,Email) values(@UserName,@UserPass,@RegTime,@Email)"; 4 SqlParameter[] pars = { 5 new SqlParameter("@UserName",SqlDbType.NVarChar,32), 6 new SqlParameter("@UserPass",SqlDbType.NVarChar,32), 7 new SqlParameter("@RegTime",SqlDbType.DateTime), 8 new SqlParameter("@Email",SqlDbType.NVarChar,32) 9 10 11 }; 12 pars[0].Value = userInfo.UserName; 13 pars[1].Value = userInfo.UserPass; 14 pars[2].Value = userInfo.RegTime; 15 pars[3].Value = userInfo.Email; 16 return SqlHelper.ExecuteNonquery(sql, CommandType.Text, pars); 17 18 }
3. BLL(业务层)调用
1 public List<UserInfo> GetList() 2 { 3 return UserInfoDal.GetList(); 4 5 }
总结:大致就是这样,谢谢学习,有哪里不懂的可以留言。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构