コード例 #1
0
ファイル: DAL.cs プロジェクト: phsilvasantos/Conciliacao
        /// <summary>
        /// Efetua um select na base e retorna um objeto T com base no seu primary key
        /// <c>Empresa empresa = DAL.GetObjetoById<Empresa>(3);</c>
        /// </summary>
        /// <typeparam name="T">Tipo do retorno</typeparam>
        /// <param name="id">Código id para buscar o objeto na base</param>
        /// <returns>Retorna uma instância do Tipo</returns>
        public static T GetObjetoById<T>(long id) where T : class, new()
        {
            // cria uma instância do objeto
            T item = new T();

            // pega os campos para poder montar o select
            List<Campo> campos = Montador.GetCampos(item);

            // monta o select e filtra pelo campo chave
            string sql = GetSqlSelect(item, string.Format("{0}={1}", GetIdFieldName(campos), id));

            using (MySqlConnection conexao = new MySqlConnection(GetStringConexao()))
            using (Comando comando = new Comando(conexao, sql))
            using (Leitor leitor = comando.Select())
            {
                // tem retorno
                if (leitor.RecordCount > 0)
                    // percorre as propriedades
                    foreach (PropertyInfo property in Auxiliar.PropertySimple(item))
                    {
                        // valor busta pelo nome do campo
                        object valor = leitor.GetObject(Auxiliar.GetColumnName(property));

                        if ((valor != null) && (!(valor is System.DBNull)))
                        {
                            property.SetValue(item,
                                                valor.GetType().Name.Equals("TimeSpan") ? valor.ToString() : valor.GetType().Name.Equals("SByte") ? (((sbyte)valor == 1) ? true : false) : valor, null);
                        }
                    }
            }

            return item;
        }
コード例 #2
0
ファイル: DAL.cs プロジェクト: phsilvasantos/Conciliacao
        /// <summary>
        /// Efetua um select na base e retorna uma list de objeto T com base em um filtro e order by 
        /// <c> List<Usuario> lista = DAL.ListarObjetos<Usuario>(typeof(Usuario));</c>
        /// </summary>
        /// <typeparam name="E">Tipo do List de retorno</typeparam>
        /// <param name="filtro">Use a classe Filtros para montar o filtro</param>
        /// <param name="ordem">É string, mas ao invés de passar os campos diretamente, use a classe Order</param>
        /// <returns>Retorna uma List de instâncias do Tipo</returns>
        public static List<E> ListarObjetos<E>(string filtro = "", string ordem = "", string group = "") where E : class, new()
        {
            List<E> list = new List<E>();
            string sql = GetSqlSelect(new E(), filtro, ordem, group);
            using (MySqlConnection conexao = new MySqlConnection(GetStringConexao()))
            using (Comando comando = new Comando(conexao, sql))
            {
                //conexao.Open();
                using (Leitor leitor = comando.Select())
                {
                    try
                    {
                        while (!leitor.Eof)
                        {
                            // cria uma instância do objeto
                            E item = new E();

                            // percorre as propriedades
                            foreach (PropertyInfo property in Auxiliar.PropertySimple(item))
                            {
                                // valor busta pelo nome do campo
                                object valor = leitor.GetObject(Auxiliar.GetColumnName(property));

                                if ((valor != null) && (!(valor is DBNull)))
                                {
                                 /*   if (property.PropertyType.FullName.Equals("System.Boolean"))
                                    {
                                        property.SetValue(item,
                                            valor.ToString().Equals("1") ? true : false, null);
                                    }
                                    else
                                    { */
                                        property.SetValue(item,
                                                valor.GetType().Name.Equals("TimeSpan") ? valor.ToString() : valor.GetType().Name.Equals("SByte") ? (((sbyte)valor == 1) ? true : false) : valor, null);
                                   /* } */


                                }
                            }
                            list.Add(item);

                            //Proximo
                            leitor.Next();
                        }
                    }
                    catch (Exception ex)
                    {
                        //throw ex;
                    }
                }
            }
            return list;
        }
コード例 #3
0
ファイル: DAL.cs プロジェクト: hallanpagani/ShowNovo
        /// <summary>
        /// Efetua um select na base e retorna uma list de objeto T com base em um filtro e order by
        /// <c> List<Cliente/> lista = DAL.ListarObjetosFromSQL<Cliente/>('select nm_cliente from cadastro_cliente')</c>
        /// </summary>
        /// <typeparam name="E">Tipo do List de retorno</typeparam>
        /// <param name="_sql">Use este campo para passar o sql fortemente tipado com o objeto</param>
        /// <returns>Retorna uma List de instâncias do Tipo</returns>
        public static List <E> ListarObjetosFromSql <E>(string sql) where E : class, new()
        {
            List <E> list = new List <E>();
            string   _sql = sql;

            using (MySqlConnection conexao = new MySqlConnection(GetStringConexao()))
                using (Comando comando = new Comando(conexao, Regex.Replace(_sql, @"\r\n?|\n", "")))
                {
                    //conexao.Open();
                    using (Leitor leitor = comando.Select())
                    {
                        try
                        {
                            while (!leitor.Eof)
                            {
                                // cria uma instância do objeto
                                E item = new E();

                                // percorre as propriedades
                                foreach (PropertyInfo property in Auxiliar.PropertySimple(item))
                                {
                                    // valor busta pelo nome do campo
                                    object valor = leitor.GetObject(Auxiliar.GetColumnName(property));

                                    if ((valor != null) && (!(valor is DBNull)))
                                    {
                                        property.SetValue(item,
                                                          valor.GetType().Name.Equals("TimeSpan") ? valor.ToString() : valor.GetType().Name.Equals("SByte") ? (((sbyte)valor == 1) ? true : false) : valor.GetType().Name.Equals("Boolean") ? (((Boolean)valor == true) ? 1 : 0) : valor, null);
                                    }
                                }
                                list.Add(item);

                                //Proximo
                                leitor.Next();
                            }
                        }
                        catch (Exception ex)
                        {
                            // throw ex;
                        }
                    }
                }
            return(list);
        }
コード例 #4
0
ファイル: DAL.cs プロジェクト: phsilvasantos/Conciliacao
        /// <summary>
        /// Efetua um select na base e retorna um objeto T com base em um filtro (retorna apenas 1 registro)
        /// </summary>
        /// <c>
        ///    Empregado empregado = new Empregado();
        ///
        ///    Filtros filtro = new Filtros().Add(() => empregado.Nome, empregado, FiltroExpressao.Igual, "Junior");
        ///    empregado = DAL.GetObjeto<Empregado>(filtro.ToString());
        ///
        ///    if (empregado == null)
        ///        Console.WriteLine("Nao encontrado!");
        ///    else
        ///        Console.WriteLine(empregado.Id + "-" + empregado.Nome);
        /// </c>
        /// <typeparam name="T">Tipo do retorno</typeparam>
        /// <param name="filtro">Use a classe Filtros para montar o filtro</param>
        /// <returns>Retorna uma instância do Tipo</returns>
        public static T GetObjeto<T>(string filtro = "") where T : class, new()
        {
            // cria uma instância do objeto
            T item = new T();

            // pega os campos para poder montar o select
            List<Campo> campos = Montador.GetCampos(item);

            // monta o select e filtra pelo campo chave
            string sql = GetSqlSelect(new T(), filtro);

            using (MySqlConnection conexao = new MySqlConnection(GetStringConexao()))
            using (Comando comando = new Comando(conexao, sql))
            using (Leitor leitor = comando.Select())
            {
                try
                {
                    // não tem nenhum? volta nulo
                    if (leitor.RecordCount == 0)
                        return null;

                    // percorre as propriedades
                    foreach (PropertyInfo property in Auxiliar.PropertySimple(item))
                    {
                        // valor busta pelo nome do campo
                        object valor = leitor.GetObject(Auxiliar.GetColumnName(property));
                        if ((valor != null) && (!(valor is System.DBNull)))
                        {
                            property.SetValue(item,
                                                valor.GetType().Name.Equals("TimeSpan") ? valor.ToString() : valor.GetType().Name.Equals("SByte") ? (((sbyte)valor == 1) ? true : false) : valor, null); ;
                        }
                    }
                }
                catch (Exception ex)
                {
                    // throw ex;
                }
            }

            return item;
        }
コード例 #5
0
ファイル: DAL.cs プロジェクト: hallanpagani/SistemaUFO
        /// <summary>
        /// Efetua um select na base e retorna uma list de objeto T com base em um filtro e order by
        /// <c> List<Usuario> lista = DAL.ListarObjetos<Usuario>(typeof(Usuario));</c>
        /// </summary>
        /// <typeparam name="E">Tipo do List de retorno</typeparam>
        /// <param name="filtro">Use a classe Filtros para montar o filtro</param>
        /// <param name="ordem">É string, mas ao invés de passar os campos diretamente, use a classe Order</param>
        /// <returns>Retorna uma List de instâncias do Tipo</returns>
        public static List <E> ListarObjetos <E>(string filtro = "", string ordem = "", string group = "") where E : class, new()
        {
            List <E> list = new List <E>();
            string   sql  = GetSqlSelect(new E(), filtro, ordem, group);

            using (MySqlConnection conexao = new MySqlConnection(GetStringConexao()))
                using (Comando comando = new Comando(conexao, sql))
                {
                    using (Leitor leitor = comando.Select())
                    {
                        try
                        {
                            while (!leitor.Eof)
                            {
                                // cria uma instância do objeto
                                E item = new E();

                                // percorre as propriedades
                                foreach (PropertyInfo property in Auxiliar.PropertySimple(item))
                                {
                                    // valor busta pelo nm_insumo do campo
                                    object valor = leitor.GetObject(Auxiliar.GetColumnName(property));

                                    if ((valor != null) && (!(valor is DBNull)))
                                    {
                                        property.SetValue(item, valor, null);
                                    }
                                }
                                list.Add(item);

                                //Proximo
                                leitor.Next();
                            }
                        }
                        catch (Exception ex)
                        {
                        }
                    }
                }
            return(list);
        }
コード例 #6
0
ファイル: DAL.cs プロジェクト: hallanpagani/SistemaUFO
        /// <summary>
        /// Efetua um select na base e retorna um objeto T com base no seu primary key
        /// <c>Empresa empresa = DAL.GetObjetoById<Empresa>(3);</c>
        /// </summary>
        /// <typeparam name="T">Tipo do retorno</typeparam>
        /// <param name="id">Código id para buscar o objeto na base</param>
        /// <returns>Retorna uma instância do Tipo</returns>
        public static T GetObjetoById <T>(int id) where T : class, new()
        {
            // cria uma instância do objeto
            T t = new T();

            // pega os campos para poder montar o select
            List <Campo> campos = Montador.GetCampos(t);

            // monta o select e filtra pelo campo chave
            string sql = GetSqlSelect(t, string.Format("{0}={1}", GetIdFieldName(campos), id));

            using (MySqlConnection conexao = new MySqlConnection(GetStringConexao()))
                using (Comando comando = new Comando(conexao, sql))
                    using (Leitor leitor = comando.Select())
                    {
                        // tem retorno
                        if (leitor.RecordCount > 0)
                        {
                            // percorre as propriedades
                            foreach (PropertyInfo property in Auxiliar.PropertySimple(t))
                            {
                                // valor busta pelo nm_insumo do campo
                                object valor = leitor.GetObject(Auxiliar.GetColumnName(property));

                                if ((valor != null) && (!(valor is System.DBNull)))
                                {
                                    try
                                    {
                                        property.SetValue(t, valor, null);
                                    }
                                    catch (Exception e)
                                    {
                                        Console.WriteLine(e.Message);
                                    }
                                }
                            }
                        }
                    }

            return(t);
        }
コード例 #7
0
ファイル: DAL.cs プロジェクト: hallanpagani/SistemaUFO
        public static int GetMaxColumn(string tabela, string coluna, string id_conta)
        {
            // monta o select e filtra pelo campo chave
            string sql   = "select max(" + coluna + ") as cd_perfil from " + tabela + " where id_conta = " + id_conta;
            int    value = 0;

            using (MySqlConnection conexao = new MySqlConnection(GetStringConexao()))
                using (Comando comando = new Comando(conexao, sql))
                    using (Leitor leitor = comando.Select())
                    {
                        // não tem nenhum? volta nulo
                        if (leitor.RecordCount == 0)
                        {
                            return(value);
                        }

                        // valor busta pelo nome do campo
                        object valor = leitor.GetObject(coluna);
                        value = Convert.ToInt32(valor);
                    }

            return(value);
        }
コード例 #8
0
ファイル: DAL.cs プロジェクト: hallanpagani/SistemaUFO
        /// <summary>
        /// Efetua um select na base e retorna um objeto T com base em um filtro (retorna apenas 1 registro)
        /// </summary>
        /// <c>
        ///    Empregado empregado = new Empregado();
        ///
        ///    Filtros filtro = new Filtros().Add(() => empregado.Nome, empregado, FiltroExpressao.Igual, "Junior");
        ///    empregado = DAL.GetObjeto<Empregado>(filtro.ToString());
        ///
        ///    if (empregado == null)
        ///        Console.WriteLine("Nao encontrado!");
        ///    else
        ///        Console.WriteLine(empregado.Id + "-" + empregado.Nome);
        /// </c>
        /// <typeparam name="T">Tipo do retorno</typeparam>
        /// <param name="filtro">Use a classe Filtros para montar o filtro</param>
        /// <returns>Retorna uma instância do Tipo</returns>
        public static T GetObjeto <T>(string filtro = "") where T : class, new()
        {
            // cria uma instância do objeto
            T t = new T();

            // pega os campos para poder montar o select
            List <Campo> campos = Montador.GetCampos(t);

            // monta o select e filtra pelo campo chave
            string sql = GetSqlSelect(new T(), filtro);

            using (MySqlConnection conexao = new MySqlConnection(GetStringConexao()))
                using (Comando comando = new Comando(conexao, sql))
                    using (Leitor leitor = comando.Select())
                    {
                        // não tem nenhum? volta nulo
                        if (leitor.RecordCount == 0)
                        {
                            return(null);
                        }

                        // percorre as propriedades
                        foreach (PropertyInfo property in Auxiliar.PropertySimple(t))
                        {
                            // valor busta pelo nm_insumo do campo
                            object valor = leitor.GetObject(Auxiliar.GetColumnName(property));

                            if ((valor != null) && (!(valor is System.DBNull)))
                            {
                                property.SetValue(t, valor, null);
                            }
                        }
                    }

            return(t);
        }
コード例 #9
0
ファイル: DAL.cs プロジェクト: hallanpagani/ShowNovo
        /// <summary>
        /// Efetua um select na base e retorna uma list de objeto T com base em um filtro e order by
        /// <c> List<Usuario> lista = DAL.ListarObjetos<Usuario>(typeof(Usuario));</c>
        /// </summary>
        /// <typeparam name="E">Tipo do List de retorno</typeparam>
        /// <param name="filtro">Use a classe Filtros para montar o filtro</param>
        /// <param name="ordem">É string, mas ao invés de passar os campos diretamente, use a classe Order</param>
        /// <returns>Retorna uma List de instâncias do Tipo</returns>
        public static List <E> ListarObjetos <E>(string filtro = "", string ordem = "", string group = "") where E : class, new()
        {
            List <E> list = new List <E>();
            string   sql  = GetSqlSelect(new E(), filtro, ordem, group);

            using (MySqlConnection conexao = new MySqlConnection(GetStringConexao()))
                using (Comando comando = new Comando(conexao, sql))
                {
                    //conexao.Open();
                    using (Leitor leitor = comando.Select())
                    {
                        var    typeName = "";
                        object valor    = null;

                        try
                        {
                            while (!leitor.Eof)
                            {
                                // cria uma instância do objeto
                                E item = new E();

                                // percorre as propriedades
                                foreach (PropertyInfo property in Auxiliar.PropertySimple(item))
                                {
                                    // valor busta pelo nome do campo
                                    valor = leitor.GetObject(Auxiliar.GetColumnName(property));

                                    if ((valor != null) && (!(valor is DBNull)))
                                    {
                                        typeName = valor.GetType().Name;

                                        if (typeName.Equals("TimeSpan"))
                                        {
                                            property.SetValue(item, valor.ToString());
                                        }
                                        else if (typeName.Equals("SByte"))
                                        {
                                            property.SetValue(item, (sbyte)valor == 1 ? true : false);
                                        }
                                        else if (typeName.Equals("Boolean"))
                                        {
                                            property.SetValue(item, (Boolean)valor);
                                        }
                                        else
                                        {
                                            property.SetValue(item, valor);
                                        }
                                    }
                                }
                                list.Add(item);

                                //Proximo
                                leitor.Next();
                            }
                        }
                        catch (Exception ex)
                        {
                            //  Console.WriteLine("Exception source: {0}", ex.Source);
                        }
                    }
                }
            return(list);
        }