Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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()));
        }