TRIGGER SENCILLO EN MYSQL

Posted: sábado, 31 de enero de 2009 by Skuarch in Etiquetas: , , ,
0

Los trigger en mysql esta disponibles desde la version 5.0.2 y superiores, los triggers son objetos de la base de datos el cual esta ligado a una tabla y este se ejecuta cuando pasa alguna accion (INSERT,UPDATE,DELETE) en el ejemplo siguiente se muestra un ejemplo.

DELIMITER |

CREATE TRIGGER nombreTrigger BEFORE INSERT ON nombreTabla
FOR EACH ROW
BEGIN

INSERT INTO nombreTabla SET campo1 = NEW.nuevoCampo1; //tienes que tener cuidado aqui
DELETE FROM nombreTabla WHERE campo3 = NEW.campo1;
UPDATE nombreTabla SET cmpo4 = b4 + 1 WHERE campo4 = NEW.campo1;

END
|

DELIMITER ;


Lo que podemos observar de este sencillo codigo es que se necesita de un delimitador " | "
con la sentencia " CREATE TRIGGER " seguido del nombre se crea el trigger, " BEFORE o AFTER " esto se coloca cuando se quiere que se ejecute una funcion, antes o despues de alguna accion (INSERT,UPDATE,DELETE) despues se coloca " ON " y el nombre de la tabla con la que se quieres que se dispare el trigger, " FOR EACH ROW " para cada fila, despues vemos que se realizan un insert, un update y un delete, pero lo que se resalta de esto es " NEW.campo1 ", se pueden utilizar dos palabras " NEW u OLD" si el trigger esta definido para que se ejecute con BEFORE se utilizara NEW, si es AFTER se utilizara OLD, esto lo que quiere decir es que, si se usa NEW el campo todavia no se a insertado y lo contrario con OLD, dicho con otras palabras se tomaria el campo antes o despues de la accion, " DELIMITER ;" debe de llevar un espacion antes del " ; ".

Espero que te sirva, si no buscale por otro lado.

CONEXIONES EN MS-DOS O .bat

Posted: domingo, 25 de enero de 2009 by Skuarch in Etiquetas: ,
0

Con este pequeño script podemos ver que conexiones tenemos activas, las que estan cerrando, y las conexiones que se estan estableciendo.

Esto lo realizamos con un simple comando que se utiliza en windows, este es netstat, despues realiaza una busqueda y un conteo en el resultado del comando mas o menos seria asi.


REM autor skuarch
@ECHO OFF
CLS
ECHO:CONEXIONES ACTIVAS:
netstat -an |find /C "ESTABLISHED"
ECHO:CONEXIONES CERRANDOSE [close_wait]:
netstat -an |find /C "WAIT"
ECHO:CONEXIONES ESTABLECIENDOSE [syn_sent]:
netstat -an |find /C "SYN_SENT"
ECHO:
ECHO:
ECHO:PUERTOS TCP ABIERTOS:
ECHO:
netstat -an | find "LISTENING"
pause

pues lo unico que se puede resaltar de este sencillo script es como se realiza la busque de en el resultado de un comando.

netstat -an | find "LISTENING"

con esto buscamos todas las conexiones que esten en escucha.

USO DE TIMER Y TIMERTASK

Posted: domingo, 31 de agosto de 2008 by Skuarch in Etiquetas: , , , ,
2



Para poder crear una tarea que se repita cada cierto periodo en java, se puede utilizar la clase Timer un ejemplo de este puede ser un reloj que cada segundo muestra la hora, pero para realizar un ejemplo sencillo, solo se va a imprimir un numero cada segundo, con esto cada quien puede realizar sus propias adecuaciones al codigo.


import java.util.Timer;
import java.util.TimerTask;

/**
*
* @author skuarch
*/
public class PruebaTimer {

    public static void main(String[] args) {

        // Clase en la que está el código a ejecutar
        TimerTask timerTask = new TimerTask() {

            int numero = 0;

            public void run() {
                System.out.println(numero++);
            }
        };

        // se crea un objeto del tipo timer
        Timer timer = new Timer();

        // se indica la tarea a ejecutar,
        //el retardo y cada cuando se tiene que repetir
        timer.scheduleAtFixedRate(timerTask, 0, 1000);
    }//fin main
}//fin class


El ejemplo es muy sencillo, cabe mencionar que en la clase TimerTask contiene un metodo que se llama run(), esto es parecido a los Thread, lo que contiene el metodo run es lo que se va a ejecutar cada cierto periodo.

Despues se crea un objeto de tipo Timer, que en este caso se llama "timer", y este accede a la propiedad scheduleAtFixedRate que se le tiene que pasar como parametros la tarea que se va a realizar el retardo, y el periodo, esta funcion tambien pude ser llamada cada determinada fecha, en la api de java puedes encontrar mas informacion sobre como programar tareas con fechas.

MANDAR CORREOS SIMPLES CON JAVA

Posted: lunes, 14 de julio de 2008 by Skuarch in Etiquetas: , , , , ,
0

Una de las formas de enviar correo con java es utilizar la api de java, javamail, que la puedes descargar de la pagina de sun, tambien se requiere del marco de trabajo que tambien se descarga del mismo lugar, con el nombre de jaf o activador, cuando se tengan estas dos apis se copian los archivos mail.jar y activator.jar en la ruta, C:\Program Files\Java\jdk1.6.0_04\jre\lib\ext obvio sobre windows, si usas otro que no sea JDK la la verdad no se donde se pongan los archivos, supongo que en el mismo lugar pero la verdad no se.

Ahora solo necesitamos un servidor que envie los correos, yo tengo un servidor smtp en windows 2003, pero tambien se puede crear en windows xp profesional, en el panel de control, agregar o quitar programas, agregar o quitar componentes de windows, hay buscamos Servicios de Internet informacion Server(IIS), dentro de eso buscamos Servicio SMTP y lo activamos, damos en aceptar en todo y nos pedira el disco de instalacion, es lo mismo para windows 2003, despues de esto se tiene que configurar el servidor.


Para configurar el servidor y que nos permita enviar correos, tenemos que realizar lo siguiente,
en el boton inicio, seleccionar mi pc dar click derecho y escoger administrar, nos abre una ventana que se llama administracion de equipos, hay buscamos servicios y aplicaciones, dentro de este buscamos Servicios de Internet Information Server(IIS), dentro de este encontramos Default SMTP Virtual Server damos click derecho y escogemos propiedades, nos aparece una ventana escogemos la pestaña de acceso y en la parte de reenvio damos click, hay escogemos la opcion de todas excepto las de esta lista, aceptamos en todo y con eso tenemos nuestro server de correos.


Una vez que se tienen esos archivos en la ruta especificada pasamos a realizar este pequeño codigo.


import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;

public class Msgsend {

public static void main(String []args) throws Exception{

Properties p = new Properties();
p.setProperty("mail.smtp.host", "localhost");
p.setProperty("mail.smtp.starttls", "true");
p.setProperty("mail.smtp.port", "25");
//p.setProperty("mail.smtp.user", "alguien@dominio.com");
p.setProperty("mail.smtp.auth", "false");

Session session = Session.getDefaultInstance(p,null);

session.setDebug(false);

MimeMessage message = new MimeMessage(session);

// Quien envia el correo
message.setFrom(new InternetAddress("alguien@dominio.com.mx"));

// A quien va dirigido
message.addRecipient(Message.RecipientType.TO, new InternetAddress("quienresibe@dominio.com.mx"));

message.setSubject("prueba de correo");
message.setText("este es el contenido del mensaje");

Transport t = session.getTransport("smtp");

t.connect();

t.sendMessage(message,message.getAllRecipients());

t.close();

}


}

hay esta si no te sale pues buscale por otro lado.

4




Este es un pequeño ejemplo de como crear un Stored Procedure en mysql que no regrese nada.

Paso 1:
Como es comun en la programacion se tienen muchos errores y para crear un sp (Stored Procedure) se realiza a base de prueba/error, para eso ponemos en la primer linea esto:

DROP PROCEDURE IF EXISTS mysp;


el nombre del stored procedure es mysp

Paso 2:
se tiene que utilizar un delimitador, yo utilizo //
DELIMITER //

este delimitidor mas adelante se debe de cerrar.
con la sentencia
CREATE PROCEDURE mysp ()

indicamos la creacion del sp, el sp debe de tener un cuerpo y un final para eso usamos las etiquetas BEGIN y END

Entonces ya temenos esta parte de codigo

DELIMITER //
CREATE PROCEDURE mysp ()

BEGIN

END

//
DELIMITER ;#aqui es donde se cierra el delimitador


La instruccion DELIMITER ; esta ultima instruccion debe de tener un espacio antes del ";"

Paso 3:
Declaracion y asignacion de variables, la declaracion de variables dentro de un sp es de la siguiente forma.

DECLARE var1 INT DEFAULT 0; #variables enteras
DECLARE var2 VARCHAR(15); #variables varchar tambien le podemos decir strings


La asignacion se realiza de esta manera:

SET vat1 = "hola";


Tambien existe otra forma de aisgnarles valores que se ve mas adelante.

Paso 4: (opcional)
Podemos tener un ciclo dentro del sp de la siguiente forma.

WHILE v1 <= 10 DO
SET v1 = v1 +1;
END WHILE;


Llenar variables con resultados de un select

SELECT campo INTO variable FROM tabla LIMIT 1;


Para llenar las variables de este tipo el resultado del select solo tienes que regresar un registro, de lo contrario tendriamos un error, podemos llenar varias variables dentro del mismo select

SELECT campo1,campo2,campo3 INTO variable1,variable2,variable3 FROM tabla LIMIT 1;


Nuestro codigo hasta el paso 4 se veria asi:

DROP PROCEDURE IF EXISTS mysp;

DELIMITER //
  CREATE PROCEDURE mysp ()

   BEGIN
    DECLARE var1 INT DEFAULT 0;
    DECLARE var2 VARCHAR(15);

    WHILE var1 <= 10 DO

     SELECT campo INTO var2 FROM tabla LIMIT 1;
     SET var1 = var1 + 1; #var1 +=

    END WHILE;

   END

//
DELIMITER ;


para llamar al procedure se utiliza:

call mysp();


Eso es todo para un ejemplo sencillo !!!!