protected List <T> Select(
     string sql,
     Dictionary <string, object> fields,
     DataParserDelegator parser = null,
     QueryOper oper             = QueryOper.EQ,
     QueryPredicate predicate   = QueryPredicate.AND)
 {
     sql = string.Format("{0} {1}", sql, QueryBuilder.Where(fields, oper, predicate));
     return(ExecQuery <T>(sql, fields, parser));
 }
        protected List <U> ExecQuery <U>(string query, Dictionary <string, object> fields, DataParserDelegator parser)
        {
            List <U> result = new List <U>();

            parser = parser ?? dataParser;
            try
            {
                using (var cmd = connection.CreateCommand())
                {
                    cmd.CommandText = query;
                    foreach (var field in fields)
                    {
                        cmd.Parameters.AddWithValue(field.Key, field.Value ?? DBNull.Value);
                    }
                    using (var reader = cmd.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            result.Add((U)parser(reader));
                        }
                        return(result);
                    }
                }
            }
            catch (Exception e)
            {
                throw new ConsoleMsgException(e);
            }
        }
 public BaseHandler(string _tableName, MySqlConnection _connection, DataParserDelegator _dataParser = null)
 {
     TableName  = _tableName;
     connection = _connection;
     dataParser = _dataParser ?? ParseData;
 }