1.生成新增sql語句
//單獨乙個model時
public static string insertsql(t t)
object value = pi.getvalue(t, null);
if (value == null)
continue; //未給值,null
value = commonfunc.uninjection(value);
if (value == null)
else if (value.gettype() == typeof(int) || value.gettype() == typeof(decimal) || value.gettype() == typeof(double) || value.gettype() == typeof(long) || value.gettype() == typeof(float))
else}}
sb.remove(sb.length - 1, 1);
sb_v.remove(sb_v.length - 1, 1);
return sb.tostring();
}//多個model時
public static string insertsql(listt)
return sb.tostring();
}
2.生成修改sql語句
//更新乙個實體
public static string updatesql(t t)
if (ca.nottablefield) //不是表字段
continue;
}#endregion
if (value == null) continue; //如果該字段為null不更新
value = commonfunc.uninjection(value);
if (value == null)
else if (value.gettype() == typeof(int) || value.gettype() == typeof(decimal) || value.gettype() == typeof(double) || value.gettype() == typeof(long) || value.gettype() == typeof(float))
else}}
if (string.isnullorempty(primaryname))
throw new exception("需要主鍵(請檢查表是否設定主鍵以及model主鍵字段是否設定特性)");
else if (parmaryvalue == null)
throw new exception("請檢查主鍵值");
else if (string.isnullorempty(sb_u.tostring()))
throw new exception("無更新");
else
return sb.tostring();
}//更新多個實體
public static string updatesql(listt)
return sb.tostring();
}
上面兩種需要用cmdb外掛程式
下面給出不需要用外掛程式的
3,插入
/// /// insert sql語句
///
/// 要轉換的物件,不可空
/// 要新增的表明,不可空
/// /// 空
/// sql語句
///
public static string insertsql(t t, string tablename) where t : class
string columns = string.join(",", t.gettype().getproperties().select(p => p.name).tolist());
if (string.isnullorempty(columns))
string values = string.join(",", t.gettype().getproperties().select(p => string.format("''", p.getvalue(t, null))).toarray());
if (string.isnullorempty(values))
stringbuilder sql = new stringbuilder();
return sql.tostring();
}/// /// insert sql語句(批量新增)
///
/// 型別
/// 要轉換的物件集合,不可空
/// >要新增的表明,不可空
/// /// 空
/// sql語句
///
public static string insertsql(listobjs, string tablename) where t : class
stringbuilder sb = new stringbuilder();
foreach (var item in objs)
return sb.tostring();
}
4,更新
/// /// update sql語句
///
/// 要轉換的物件,不可空
/// 要新增的表明,不可空
/// /// 空
/// sql語句
///
public static string updatesql(t t, string tablename) where t : class
stringbuilder sb = new stringbuilder();
propertyinfo mypropertyinfo = typeof(t).getproperties(bindingflags.public | bindingflags.instance);
for (int i = 0; i < mypropertyinfo.length; i++)
else
if (i != mypropertyinfo.length - 1)
}return sb.tostring();
}/// /// update sql語句(批量修改)
///
/// 型別
/// 要轉換的物件集合,不可空
/// >要新增的表明,不可空
/// /// 空
/// sql語句
///
public static string updatesql(listobjs, string tablename) where t : class
stringbuilder sb = new stringbuilder();
foreach (var item in objs)
return sb.tostring();
}
反射生成SQL語句入門
今天我們來學習學習通過反射技術來生成sql語句。反射提供了封裝程式集 模組和型別的物件。您可以使用反射動態地建立型別的例項,將型別繫結到現有物件,或從現有物件中獲取型別。然後,可以呼叫型別的方法或訪問其字段和屬性。1.先建立實體類 使用者實體類 public class user public st...
sql新增 刪除 修改
新增欄位的語法 alter table tablename add column datatype default value null not null 被修改的字段需為null 修改欄位的語法 alter table tablename modify column datatype defaul...
sql實現無則新增有則修改(xml)
批量新增 親測 addbatch insert into student username,password,name,code value list item stu separator 批量新增 有則修改,無則插入,親測 addbatch1 insert into student usernam...