public static List <T> ExecuteReader <T>(string sqlCommand, SQLiteParameter[] parameters, Func <SQLiteDataReader, T> converter)
        {
            var conn = DBSQLiteConnection.CreateOrGet();
            var comm = conn.CreateCommand(sqlCommand, parameters);

            conn.OpenConnection();

            try
            {
                SQLiteDataReader dataReader = comm.ExecuteReader();

                List <T> res = new List <T>();
                while (dataReader.Read())
                {
                    res.Add(converter(dataReader));
                }

                return(res);
            }
            catch (Exception ex)
            {
                throw;
            }
            finally
            {
                conn.CloseConnection();
            }
        }
        public static DBSQLiteConnection CreateOrGet()
        {
            var ins = SQLiteConnectionFactory.Restore();

            if (ins == null)
            {
                lock (_OBJECT_LOCK)
                {
                    ins = SQLiteConnectionFactory.Restore();
                    if (ins == null)
                    {
                        ins = new DBSQLiteConnection();
                        SQLiteConnectionFactory.Cache(ins);
                    }
                }
            }

            return(ins);
        }
        public static void ExecuteNonQueryCommand(string sqlCommand, SQLiteParameter[] parameters)
        {
            var conn = DBSQLiteConnection.CreateOrGet();
            var comm = conn.CreateCommand(sqlCommand, parameters);

            conn.OpenConnection();

            try
            {
                comm.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw;
            }
            finally
            {
                conn.CloseConnection();
            }
        }
 public static object Cache(DBSQLiteConnection obj)
 {
     _FACTORY.SetDataSource(HttpContext.Current.Items);
     return(_FACTORY.Cache(obj, _key));
 }