public static bool GetAutoId <T>(string primarykey) { PropertyInfo info = typeof(T).GetProperty(primarykey); AutoId autoid = Attribute.GetCustomAttribute(info, typeof(AutoId)) as AutoId; return(autoid.SetAutoId); }
public int Insert <T>(T value) { string primarykey = DbComm.GetPrimaryKey <T>(); PropertyInfo[] pinfos = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly); StringBuilder sb = new StringBuilder(); List <SQLiteParameter> parameters = new List <SQLiteParameter>(); StringBuilder sbcolumn = new StringBuilder(); StringBuilder sbvalue = new StringBuilder(); bool isautoid = false; foreach (PropertyInfo item in pinfos) { if (item.Name == primarykey) { AutoId attributeautoid = Attribute.GetCustomAttribute(item, typeof(AutoId)) as AutoId; if (attributeautoid != null) { isautoid = attributeautoid.SetAutoId; } continue; } sbcolumn.AppendFormat("[{0}],", item.Name); sbvalue.AppendFormat("@{0},", item.Name); parameters.Add(new SQLiteParameter(item.Name, item.GetValue(value, null))); } sbcolumn = sbcolumn.Remove(sbcolumn.Length - 1, 1); sbvalue = sbvalue.Remove(sbvalue.Length - 1, 1); sb.AppendFormat(" Insert Into {0} ({1}) values ({2}) ", typeof(T).Name, sbcolumn.ToString(), sbvalue.ToString()); if (isautoid) { sb.Append(" ; select last_insert_rowid(); "); object obj = ExecuteScalar(sb.ToString(), parameters.ToArray()); if (obj != DBNull.Value) { return(Convert.ToInt32(obj)); } } return(ExecuteNonQuery(sb.ToString(), parameters.ToArray())); }