.net 简易数据库操作框架1.3
来源:互联网 发布:无间道3剧情解析 知乎 编辑:程序博客网 时间:2024/05/16 17:37
前面写好了据库操作、实体类有关的属性,这一节写sql语句生成部分首先我编写了一个sql语句生成的接口
public interface GetSql { /// <summary> /// 新增 /// </summary> /// <typeparam name="T">类名</typeparam> /// <param name="t">实体类</param> /// <returns></returns> List<object> Sava<T>(T t); /// <summary> /// 修改 /// </summary> /// <typeparam name="T">类名</typeparam> /// <param name="t">实体类</param> /// <returns></returns> List<object> Update<T>(T t); /// <summary> /// 修改 /// </summary> /// <typeparam name="T">类名</typeparam> /// <param name="sql">执行语句</param> /// <param name="args">参数</param> /// <returns></returns> List<object> Update<T>(string sql, params object[] args); /// <summary> /// 查询 /// </summary> /// <typeparam name="T">类名</typeparam> /// <param name="obj">主键值</param> /// <returns></returns> List<object> Query<T>(object obj); /// <summary> /// 查询 /// </summary> /// <typeparam name="T">类名</typeparam> /// <param name="sql">执行语句</param> /// <param name="args">参数</param> /// <returns></returns> List<object> Query<T>(string sql, params object[] args); /// <summary> /// 删除 /// </summary> /// <typeparam name="T">类名</typeparam> /// <param name="sql">执行语句</param> /// <param name="args">参数</param> /// <returns></returns> List<object> Delete<T>(string sql, params object[] args); /// <summary> /// 分页查询 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="PageCount">行数</param> /// <param name="PageIndex">当前页码</param> /// <param name="sql">执行语句</param> /// <param name="args">参数</param> /// <returns></returns> List<object> Page<T>(int PageCount,int PageIndex, string sql, params object[] args); }
里面的方法大家可以根据自己的需求自由添加,然后我实现了SqlServer的类,由于代码量比较大我就没有一次性发上来了,先实现了新增生成的sql语句的代码
/// <summary> /// 生成新增的sql和SqlParameter /// </summary> /// <typeparam name="T">对象类型</typeparam> /// <param name="t">对象</param> /// <returns></returns> public List<object> Sava<T>(T t) { try { object[] objAttrs = null; List<string> listColumnName = new List<string>(); Type objType = typeof(T); objAttrs = objType.GetCustomAttributes(typeof(DBAttribute), true); StringBuilder sb = new StringBuilder();//生成的sql语句 sb.Append("insert into "); //读取拼接表名 if (objAttrs.Length > 0) { DBAttribute attr = objAttrs[0] as DBAttribute; sb.Append(attr != null ? attr.FiledName : objType.Name); } else { sb.Append(objType.Name); } List<PropertyInfo> pro = objType.GetProperties().ToList();//获取实体类所有公共属性 //获取需要新增的属性 for (int i = 0; i < pro.Count; i++) { objAttrs = pro[i].GetCustomAttributes(typeof(DBAttribute), true); if (objAttrs.Length > 0) { DBAttribute attr = objAttrs[0] as DBAttribute; if (attr != null) { if (attr.FieldProps == "2" || attr.FieldProps == "3") { pro.Remove(pro[i]);//移除不需要新增的属性 i--; } } } } sb.Append("("); List<string> list = (from s in pro select s.Name).ToList(); sb.Append(string.Join(",", list)); sb.Append(") values"); sb.Append("("); list = (from s in pro select "@" + s.Name).ToList(); sb.Append(string.Join(",", list)); sb.Append(")"); SqlParameter[] par = new SqlParameter[pro.Count()]; for (int i = 0; i < par.Length; i++) { par[i] = new SqlParameter("@" + pro[i].Name, (pro[i].GetValue(t, null) == null ? "" : pro[i].GetValue(t, null)).ToString()); } sb.Append(" select @@IDENTITY"); return new List<object>() { sb.ToString(), par }; } catch (Exception ex) { throw ; } }
第一次写博客,很多地方不懂,欢迎大家批评指正,谢谢!联系QQ:1831996117.加好友注明是博客
阅读全文
0 0
- .net 简易数据库操作框架1.3
- .net 简易数据库操作框架1.1
- .net 简易数据库操作框架1.2
- .net 简易数据库操作框架1.4
- .net 简易数据库操作框架1.5
- .net 简易数据库操作框架1.6
- QML 数据库操作 简易篇
- F.NET框架示例(四)、数据库操作 之 新增
- F.NET框架示例(五)、数据库操作 之 修改
- F.NET框架示例(六)、数据库操作 之 删除
- 手撸一个简易Android数据库框架
- asp.net 2.0 数据库访简易类
- yii简易留言板 AR操作数据库
- tp操作mongodb数据库之简易留言板
- 数据库操作框架
- CI框架 数据库操作
- OrmLite框架操作数据库
- .Net操作数据库大全
- 从上到下打印二叉树
- 排序和比较:IComparable和IComparer,自己写泛型数组,索引器,
- uCOS-II入门介绍
- 属性动画 ValueAnimator 和 ObjectAnimator 之间的区别
- Hadoop-Flume-1
- .net 简易数据库操作框架1.3
- tomcat 中文乱码
- 西南交通大学第十三届ACM决赛【7/11】
- Git使用gitignore建立项目过滤规则
- 首页弹出一次的弹出层
- js 快速数组排序 Array sort()排序算法 splice()
- hdu 3549 Flow Problem (EK 最大流)
- win7在同一窗口打开文件夹设置失效
- MongoDB PHP基本操作,快速入门