![]() |
Logo de la librería que se muestra en github https://github.com/JakeWharton/butterknife |
jueves, 31 de marzo de 2016
[Android] ButterKnife: Enlazar componentes de vista al codigo rapidamente
lunes, 21 de marzo de 2016
[C#] Una pequeña clase para conectar con MYSQL
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using MySql.Data.MySqlClient; using System.Configuration; namespace BackEndMysql.Controller { ////// Clase para el manejo de las conexiones con Mysql /// Author: Cobymotion /// public class ManageConnection { //variables de para la conexion protected string ConnectionStringLocal; protected MySqlConnection SQLConexion; ////// Permite inicializar de las configuraciones la cadena de conexion y genera una conexion nueva /// public ManageConnection() { try { ConnectionStringLocal = ConfigurationManager.ConnectionStrings["ServerDb"].ConnectionString; //MySqlConnection SQLConexion = default(MySqlConnection); } catch (Exception e) { Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); ConnectionStringLocal = config.ConnectionStrings.ConnectionStrings["ServerDb"].ConnectionString.ToString(); Console.WriteLine(e.ToString()); } SQLConexion = new MySqlConnection(ConnectionStringLocal); } ////// Valida que se abra la conexion y la mantiene abierta /// private void openConexion() { try { if (SQLConexion.State == ConnectionState.Closed) SQLConexion.Open(); } catch (MySqlException ex) { Console.WriteLine("Ocurrio un error " + ex); closeConexion(); } } ////// Cierra la conexion que se vaya a generar. /// protected void closeConexion() { if (SQLConexion.State == ConnectionState.Open) { SQLConexion.Close(); SQLConexion.Dispose(); } } ////// Metodo utilizado para ejecutar sentencias de SQL que tienen que ver con ingresar, /// modificar o borrar /// /// Sentencia de SQL completa que se quiere ejecutar /// Numero de parametros que se necesitan para utilizar ///Regresa verdadero si no ocurre ninguna exception protected bool executeQueryUpdate(string sentencia, Listparametros) { bool accept = true; openConexion(); try { MySqlCommand comando = new MySqlCommand(); comando.CommandText = sentencia; comando.CommandType = CommandType.Text; comando.Connection = SQLConexion; foreach (MySqlParameter parametro in parametros) comando.Parameters.Add(parametro); comando.ExecuteNonQuery(); accept = true; } catch (MySqlException e) { accept = false; Console.WriteLine("Error al tratar de ingresar al archivo"); Console.WriteLine("Codigo error: " + e.ToString()); } finally { closeConexion(); } return accept; } /// /// Metodo utilizado para ejecutar procedimientos almacenados de SQL que tienen que ver con ingresar, /// modificar o borrar /// /// Sentencia de SQL completa que se quiere ejecutar /// Numero de parametros que se necesitan para utilizar ///Regresa verdadero si no ocurre ninguna exception protected bool executeStoredProcedureUpdate(string nombreProcedimiento, Listparametros) { bool accept = true; openConexion(); try { MySqlCommand comando = new MySqlCommand(); comando.CommandText = nombreProcedimiento; comando.CommandType = CommandType.StoredProcedure; comando.Connection = SQLConexion; foreach (MySqlParameter parametro in parametros) comando.Parameters.Add(parametro); comando.ExecuteNonQuery(); accept = true; } catch (MySqlException e) { accept = false; Console.WriteLine("Error al tratar de ingresar al archivo"); Console.WriteLine("Codigo error: " + e.ToString()); } finally { closeConexion(); } return accept; } /// /// Metodo principal para acceso a la base de datos retorna un reader mediante un procedimiento almacenado /// /// /// ///MysqlDataReader protected MySqlDataReader buscaRegistroStoredProcedure(string nombreProcedimiento, Listparametros) { MySqlDataReader reader; try { openConexion(); MySqlCommand sqlComando = new MySqlCommand(); sqlComando.CommandText = nombreProcedimiento; sqlComando.CommandType = CommandType.StoredProcedure; sqlComando.Connection = SQLConexion; foreach (MySqlParameter parametro in parametros) sqlComando.Parameters.Add(parametro); reader = sqlComando.ExecuteReader(); } catch (MySqlException ex) { Console.Write("ocurrio un error al leer " + ex); reader = null; closeConexion(); } return reader; } /// /// Permite tener acceso a la base de datos mediante una sentencia SLQ y regresa un Reader con los datos /// /// /// ///MysqlDataReader protected MySqlDataReader buscaRegistroSQL(string sentencia, Listparametros) { MySqlDataReader reader; try { openConexion(); MySqlCommand sqlComando = new MySqlCommand(); sqlComando.CommandText = sentencia; sqlComando.CommandType = CommandType.Text; sqlComando.Connection = SQLConexion; foreach (MySqlParameter parametro in parametros) sqlComando.Parameters.Add(parametro); reader = sqlComando.ExecuteReader(); } catch (MySqlException ex) { Console.Write("ocurrio un error al leer " + ex); reader = null; closeConexion(); } return reader; } /// /// metodo que toma una sentencia SQL y la ejecuta para que pueda traer una tabla del dataset /// Lo utilizo para meterlo en los grid o en los combos /// /// /// ///protected DataTable getListSentenciaSQL(String sentencia, List parametros) { DataSet miDataSet = new DataSet(); bool ban = false; try { openConexion(); MySqlCommand sqlComando = new MySqlCommand(); sqlComando.CommandText = sentencia; sqlComando.CommandType = CommandType.Text; sqlComando.Connection = SQLConexion; foreach (MySqlParameter parametro in parametros) sqlComando.Parameters.Add(parametro); MySqlDataAdapter myAdap = new MySqlDataAdapter(sqlComando); myAdap.Fill(miDataSet, "permitidos"); sqlComando.Dispose(); ban = true; } catch (MySqlException ex) { Console.Write(ex); } finally { closeConexion(); } if (ban) return miDataSet.Tables[0]; else return null; } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using MySql.Data.MySqlClient; using System.Data; namespace BackEndMysql.Controller { /// Heradamos para tener las conexión activa public class CtrlClientes:ManageConnection { ////// Metodo para buscar los registros de los articulos /// ///retorna una tabla variable public DataTable FindAllResumen() { //sentencia que se ejecutara String sentencia = "SELECT * FROM resumencliente"; //Lista de parametros, si no se necesitan solo mandamos el elemento sin datos Listparametros = new List (); // mandamos llamar el evento de obtener lista a partir de sentencia y ya tendremos un DataTable con los datos DataTable tabla = getListSentenciaSQL(sentencia, parametros); return tabla; } /// /// Metodo para agregar los clientes /// /// /// /// ///public bool addCliente(Cliente clienteDatos, int idusuario, string descripcion) { //El nombre del procedimiento String procedimiento = "addcliente"; //La lista de los parametros y el agregado de cada uno de ellos List parametros = new List (); parametros.Add(new MySqlParameter("@pnombre", clienteDatos.Cliente1.Nombre)); parametros.Add(new MySqlParameter("@pdireccion", clienteDatos.Cliente1.Direccion)); parametros.Add(new MySqlParameter("@ppoblacion", clienteDatos.Cliente1.Poblacion)); parametros.Add(new MySqlParameter("@ptelefono", clienteDatos.Cliente1.Telefono)); parametros.Add(new MySqlParameter("@pife", clienteDatos.Cliente1.Noife)); parametros.Add(new MySqlParameter("@pidaval", clienteDatos.Aval.Idpersona)); parametros.Add(new MySqlParameter("@plimite", clienteDatos.LimiteCredito)); parametros.Add(new MySqlParameter("@pidusuario", idusuario)); parametros.Add(new MySqlParameter("@pdescripcionmov", descripcion)); Ejecución de la sentencia. bool res = executeStoredProcedureUpdate(procedimiento, parametros); return res; } } }
domingo, 20 de marzo de 2016
[Mysql] Como retornar el ID despues de una instrucción Insert
Tienes que la llave es numérica e incremental
Cuando se tiene este caso, automaticamente sabemos que el Id es el numero mas grande podemos utilizar el método MAX para obtener el último registro
Select MAX(idPruebas) from pruebas;
Tienes que la llave es autonumérica
Cuando tiene estas características puedes usar el Identity o la función Last_Insert_ID cualquiera de las dos te puede ayudar.
-- Aqui va el insert (necesario ejecutar identity despues del mismo) SELECT @@identity AS id;
-- Aqui va el insert (necesario ejecutar last_insert_id despues del mismo) SELECT LAST_INSERT_ID();
En este caso, si ejecutas la siguiente operación que permite ingresar mas de un registro en una sola linea, regresara el del primer registro, ademas recordemos que last_insert_id maneja la sesión por lo que si estas en otra sesión no podrás recuperar el Id porque no esta guardado en la cache.
INSERT INTO pruebas(id, nombre) VALUES (1,"Uno"), (2,"Dos"), (3,"Tres");
Tienes un campo de Fecha/Hora que te permita ordenar
En el caso de que tengas este campo y no tengas posibilidad de comparar numéricamente puedes usar un ordenamiento en inverso que permitirá traer el id.
Select idPruebas from pruebas order by hora desc limit 1;
Ninguna de las anteriores
Set @idVirtual:=0; Select @idVirtual:=@idVirtual+1, idPruebas from pruebas order by @idVirtual desc limit 1;
How to Get the Unique ID for the Last Inserted Row
miércoles, 16 de marzo de 2016
[Web] CodeShare.io, publica tus fragmentos de código de manera sencilla
sábado, 5 de marzo de 2016
[MacOsX] Acentos en teclado ingles
Es una realidad que la las computadoras de apple no son necesariamente baratas aunque son una buena inversión, muchas veces cuidando la economía nos encontramos equipos que son importados por lo que la mayoría vienen con teclados incorporados en inglés (es decir sin ñ o acentos). Bueno aquí hay dos atajos que pueden ayudar.
Acentos
Para la letra acentuada sólo tendrás que poner esta combinación :
Option + e, letra a acentuar
En caso de la á sería así
Option + e, a
En el caso de las ñ la combinación será la siguiente
Option + n, minúscula/mayúscula de la n
En el caso de la ñ tendrá que ser así
Option + e, n
Nota: también en algunas aplicaciones NO TODAS en el caso de las letras acentuadas puedes dejar presionado la letra hasta que te aparezca un menú como el de ios que escoges el tipo de acento.
Si conoces alguna combinación te invitó a que agregues.