根据实体类生成SQL语句(增删改)

根据实体类生成SQL语句(增删改)

代码:

Skip to content Product  Team Enterprise Explore  Marketplace Pricing  Search Sign in Sign up MaChuhao / MCHDAL Public Code Issues Pull requests Actions Projects Wiki Security Insights MCHDAL/CreateSQLStr.cs / @MaChuhao MaChuhao 第一次版本提交,该模块是在.NET环境下自动生成SQL语句,并封装了增删查改的方法。 Latest commit 33c3783 on 6 Mar 2017  History  1 contributor 259 lines (224 sloc)  9.07 KB     using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Reflection; using System.Data.SqlClient;  namespace MCHDAL {     public class CreateSQLStr     {         /// <summary>         /// 通用实体类存储新数据到数据库的方法          /// 调用此方法可获得SQL Insert语句         /// </summary>         /// <typeparam name=T>模板T</typeparam>         /// <param name=model>实体对象</param>         /// <param name=tablename>表名</param>         /// <returns></returns>         public static string SaveSQLStr<T>(T model, string tablename)         {              //获得此模型的类型             Type type = typeof(T);                          string fieldsName = INSERT INTO  + tablename+ (;             string fieldsValue = VALUES(;              PropertyInfo[] propertys = model.GetType().GetProperties();             //遍历该对象的所有属性             foreach (PropertyInfo pi in propertys)             {                 string name = pi.Name;                 object value = pi.GetValue(model, null);                  if(value != null)                 {                     if(pi.PropertyType.Name.Equals(Int32))                     {                         if(Int32.Parse(value.ToString()) != 0)                         {                             fieldsName = fieldsName + pi.Name + ',';                              fieldsValue = fieldsValue + Int32.Parse(value.ToString()) + ',';                         }                     }                     else if (pi.PropertyType.Name.Equals(DateTime))                     {                         if (value.Equals(0001/1/1 0:00:000) || value.Equals(0001/1/1 0:00:00) || (DateTime)value == DateTime.MinValue)                         {                             continue;                         }                         else                         {                             fieldsName = fieldsName + pi.Name + ',';                             fieldsValue = fieldsValue + ' + value.ToString() + '\'' + ',';                         }                     }                     else if (pi.PropertyType.Name.Equals(String)|| pi.PropertyType.Name.Equals(Nullable`1))                     {                         fieldsName = fieldsName + pi.Name + ',';                          fieldsValue = fieldsValue + ' + value.ToString() + '\'' + ',';                     }                                                         }                              }             fieldsName = fieldsName.Substring(0, fieldsName.Length - 1) + ')' + ' ';              //确保该语句返回值为主键ID             fieldsValue = fieldsValue.Substring(0, fieldsValue.Length - 1) + ')' +   SELECT @@IDENTITY;              return fieldsName + fieldsValue;         }           /// <summary>         /// 通用实体类更新数据库表数据的方法          /// 调用此方法可获得SQL Update语句         /// </summary>         /// <typeparam name=T>模板T</typeparam>         /// <param name=model>实体对象</param>         /// <param name=tablename>表名</param>         /// <returns></returns>         public static string UpdateSQLStr<T>(T model, string tablename)         {             bool flag = false;             //获得此模型的类型             Type type = typeof(T);              string fields = Update  + tablename +  set ;             string where =  where ;              PropertyInfo[] propertys = model.GetType().GetProperties();             //遍历该对象的所有属性             foreach (PropertyInfo pi in propertys)             {                 string name = pi.Name;                 object value = pi.GetValue(model, null);                  if (value != null)                 {                     if (pi.PropertyType.Name.Equals(Int32))                     {                         if (Int32.Parse(value.ToString()) != 0)                         {                             if (name.Equals(ID))                             {                                 where = where + pi.Name + = + Int32.Parse(value.ToString());                                 flag = true;                             }                             else                             {                                 fields = fields + pi.Name + '=' + Int32.Parse(value.ToString()) + ',';                                                            }                         }                     }                     else if (pi.PropertyType.Name.Equals(DateTime))                     {                         if (value.Equals(0001/1/1 0:00:000) || value.Equals(0001/1/1 0:00:00) || (DateTime)value == DateTime.MinValue)                         {                             continue;                         }                         else                         {                             fields = fields + pi.Name + '=' + ' + value.ToString() + '\'' + ',';                         }                                             }                     else if (pi.PropertyType.Name.Equals(String))                     {                         fields = fields + pi.Name + '=' + ' + value.ToString() + '\'' + ',';                     }                 }              }             fields = fields.Substring(0, fields.Length - 1)  + ' ';              if (flag)             {                 return fields + where;             }             else             {                 return false;             }                      }           /// <summary>         /// 通用实体类删除数据库表数据的方法         /// 调用此方法可获得SQL Delete语句         /// </summary>         /// <typeparam name=T>模板T</typeparam>         /// <param name=model>实体对象</param>         /// <param name=tablename>表名</param>         /// <returns></returns>         public static string DeleteSQLStr<T>(T model, string tablename)         {             bool flag = false;             //获得此模型的类型             Type type = typeof(T);              string fields = Delete from   + tablename;             string where =  where ;              PropertyInfo[] propertys = model.GetType().GetProperties();             //遍历该对象的所有属性             foreach (PropertyInfo pi in propertys)             {                 string name = pi.Name;                 object value = pi.GetValue(model, null);                 if (name.Equals(ID) && Int32.Parse(value.ToString()) != 0)                 {                     where = where + pi.Name + = + Int32.Parse(value.ToString());                     flag = true;                 }             }              if (flag)             {                 return fields + where;             }             else             {                 return false;             }          }           /// <summary>         /// 通用实体类查询数据库表数据的方法         /// 调用此方法可获得SQL Select语句         /// </summary>         /// <typeparam name=T>模板T</typeparam>         /// <param name=model>实体对象</param>         /// <param name=tablename>表名</param>         /// <returns></returns>         public static string SelectSQLStr<T>(T model, string tableName)         {             string where =  where ;             bool flag = false;             PropertyInfo[] propertys = model.GetType().GetProperties();             foreach(PropertyInfo pi in propertys)             {                 string name = pi.Name;                 object value = pi.GetValue(model, null);                  if (value != null)                 {                     if (pi.PropertyType.Name.Equals(Int32))                     {                         if (Int32.Parse(value.ToString()) != 0)                         {                             where = where + pi.Name + = + Int32.Parse(value.ToString()) +  and ;                             flag = true;                                                        }                     }else if (pi.PropertyType.Name.Equals(DateTime))                     {                         //datetime转换时报错,因此以0001/1/1 0:00:000标识时间为空                         if (value.Equals(0001/1/1 0:00:000)||value.Equals(0001/1/1 0:00:00)||(DateTime)value == DateTime.MinValue)                         {                             flag = true;                         }                         else                         {                             where = where + pi.Name + '=' + ' + value.ToString() + '\'' +  and ;                             flag = true;                         }                     }                     else if (pi.PropertyType.Name.Equals(String))                     {                         where = where + pi.Name + '=' + ' + value.ToString() + '\'' +   and ;                         flag = true;                     }                   }             }              where = where.Substring(0, where.Length - 4);              if (flag)             {                 return SELECT * FROM  + tableName + where;             }             else             {                 return SELECT * FROM  + tableName;             }         }      } } © 2022 GitHub, Inc. Terms Privacy Security Status Docs Contact GitHub Pricing API Training Blog About Loading complete
View Code

 

 

 

详细见 Git