/// <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; }
/// <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; }
/// <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); }
/// <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; }
/// <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); }
/// <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); }
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); }
/// <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); }
/// <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); }