您的位置:首页 > 数据库

.net 简易数据库操作框架1.4

2017-09-22 16:22 411 查看
上节写了生成新增的sql语句,然后写生成修改的sql语句


/// <summary>
/// 生成修改的sql和SqlParameter
/// </summary>
/// <typeparam name="T">对象类型</typeparam>
/// <param name="t">对象</param>
/// <returns></returns>
public List<object> Update<T>(T t)
{
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("Update ");
//读取拼接表名
if (objAttrs.Length > 0)
{
DBAttribute attr = objAttrs[0] as DBAttribute;
sb.Append(attr != null ? attr.FiledName : objType.Name);
}
else
{
sb.Append(objType.Name);
}
sb.Append(" set ");
List<PropertyInfo> pro = objType.GetProperties().ToList();
SqlParameter spl= null;
StringBuilder sb1 = new StringBuilder();
//获取需要修改的属性
for (int i = 0; i < pro.Count; i++)
{
objAttrs = pro[i]
4000
.GetCustomAttributes(typeof(DBAttribute), true);
if (objAttrs.Length > 0)
{
DBAttribute attr = objAttrs[0] as DBAttribute;
if (attr != null)
{
if (attr.FieldProps != "0"|| attr.FieldProps != "")
{
if (attr.FieldProps == "1"|| attr.FieldProps == "2")
{
//写条件
sb1.Append(string.Format(" where {0}=@{1}", pro[i].Name, pro[i].Name));
spl = new SqlParameter("@" + pro[i].Name, (pro[i].GetValue(t, null) == null ? "" : pro[i].GetValue(t, null)).ToString());
}
pro.Remove(pro[i]);
i--;
}

}
}

}

for (int i = 0; i < pro.Count; i++)
{
if (i==0)
{
sb.Append(string.Format("{0}=@{1}",pro[i].Name, pro[i].Name));
}
else
{
sb.Append(string.Format(" , {0}=@{1}", pro[i].Name, pro[i].Name));
}
}
SqlParameter[] par = new SqlParameter[spl == null? pro.Count() : pro.Count()+1];
for (int i = 0; i < pro.Count; i++)
{
par[i] = new SqlParameter("@" + pro[i].Name, (pro[i].GetValue(t, null) == null ? "" : pro[i].GetValue(t, null)).ToString());
}
if (spl != null)
{
par[par.Length - 1] = spl;
}
return new List<object>() { sb.ToString()+sb1.ToString(), par };
}
/// <summary>
///  生成修改的sql和SqlParameter
/// </summary>
/// <typeparam name="T">对象类型</typeparam>
/// <param name="sql">执行的语句</param>
/// <param name="args">参数</param>
/// <returns></returns>
public List<object> Update<T>(string sql, params object[] args)
{
object[] objAttrs = null;
Type objType = typeof(T);
objAttrs = objType.GetCustomAttributes(typeof(DBAttribute), true);
StringBuilder sb = new StringBuilder();//生成的sql语句
sb.Append("Update ");
//读取拼接表名
if (objAttrs.Length > 0)
{
DBAttribute attr = objAttrs[0] as DBAttribute;
sb.Append(attr != null ? attr.FiledName : objType.Name);
}
else
{
sb.Append(objType.Name);
}
sb.Append(" set  " + sql);
SqlParameter[] par = new SqlParameter[args.Length];
for (int i = 0; i < par.Length; i++)
{
par[i] = new SqlParameter("@" + i, args[i]);
}
return new List<object>() { sb.ToString(), par };
}


第一次写博客,很多地方不懂,欢迎大家批评指正,谢谢!联系QQ:1831996117.加好友注明是博客
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: