Seraphinux
“Lloramos por el lamento de un pájaro pero no por la sangre de un pez, benditos aquellos que tienen voz.”

Archive for the ‘MySQL’ Category

iText: Generar un PDF con Java apartir de MySQL

Wednesday, September 17th, 2008

Un saludo a todos, ya me canse de decir esto (sobretodo por que parece excusa) pero en verdad he andado un poco atareado estos días y no he tenido tiempo de contestar a todas sus peticiones, así que no se desesperen poco apoco iré sacando los pendientes.

Tal como menciona el titulo, este post muestra como generar un PDF usando la libreria iText (de la cual ya hablamos anteriormente) a partir de los datos generados de una consulta a MySQL. Para este caso en particular utilice la DB de prueba de mi blog; El PDF generado consta de 45 pag. y pesa 68KB. El código es de lo mas sencillo, solo nos conectamos a MySQL (esto no lo explicare aquí) pedimos los primeros 100 post del blog, los almacenamos en un String y posteriormente lo imprimimos en nuestro archivo PDF.


import java.io.FileOutputStream;
import java.io.IOException;

/*** Paquetes para trabajar con iText ***/
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.PdfWriter;

/*** Importaciones para trabajar con MySQL ***/
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Main {
  public static void main(String[] args) {
    System.out.println("Este ejemplo genera un PDF apartir " +
                "del resultado a una consulta a MySQL");

    String salida = resMySQL();

    Document documento = new Document();
    try {
      PdfWriter.getInstance(documento,
          new FileOutputStream("iTextMySQL.pdf"));
      documento.open();

      documento.add(new Paragraph(salida));
    } catch (DocumentException de) {
      System.err.println(de.getMessage());
    } catch (IOException ioe) {
      System.err.println(ioe.getMessage());
    }

    documento.close();
    System.exit(0);
  }

  public static String resMySQL()
  {
    Connection conn = null;
    Statement stmt = null;
    String uDB = "usuarioDB";
    String pDB = "passDB";
    String DB = "blog_db";
    String resultado = "";

    try {
      Class.forName("com.mysql.jdbc.Driver").newInstance();
      conn = DriverManager.getConnection("jdbc:mysql://localhost/" +
           DB + "?" +
           "user=" + uDB + "&password=" + pDB);

      stmt = conn.createStatement();
      StringBuffer query = new StringBuffer("SELECT" +
          "  p.post_title" +
          ", p.post_content" +
          " FROM wp_posts p" +
          " LIMIT 0, 100");

      ResultSet rset = stmt.executeQuery(query.toString());

      while(rset.next()) {
        resultado += " Titulo: " + rset.getString(1) +
             " Contenido: " + rset.getString(2);
      }

      stmt.close();
      conn.close();

    }catch(SQLException sqlex) {
      System.out.println("SQLException:" + sqlex.getMessage());
      System.out.println("SQLState:" + sqlex.getSQLState());
      System.out.println("VendorError:" + sqlex.getErrorCode());
    }catch (Exception ex) {
      System.err.println("Error: " + ex.getMessage());
    }
      return resultado;
    }
}

Como pueden observar el ejemplo es identico al del post anterior, lo único que agregamos fue la conexion a la DB MySQL, la pregunta obligada y que se que muchos tienen es: ¿Como le doy formato? eso es relativamente facil… Una opción es usar expresiones regulares, por ejemplo en HTML el texto dentro de la etiqueta strong va en negritas, ok? Pues bien siempre que encontremos esa etiqueta solo tendremos que extraer el texto y usar el siguiente codigo:


negritas.add(
  new Phrase("Texto en negritas.\n",
    new Font(Font.TIMES_ROMAN, 8, Font.BOLD)));

El código anterior fue sacado de la documentación de iText, y existen muchos formatos mas, para texto en cursiva, para texto subrayado, etc. etc.

De igual forma para listas, tablas y cualquier otro elemento en HTML usando expresiones regulares podemos reemplazarlo por su formato iText correspondiente. Espero que esto resuelva la duda que tenian con respecto al uso de iText.

Posts Relacionados

SQL Buddy: Administrador WEB de MySQL con AJAX

Monday, August 25th, 2008

Interesante opcion es algo asi como phpMyAdmin pero con AJAX; entre las operaciones que te permitira hacer estan:

  • importar datos
  • gestionar tablas
  • exportar datos
  • administrar tablas
  • etc…

Tal como indican en Sentido WEB, no es tan completo como phpMyAdmin pero pues esta “bonito“.
Algo con lo que no estoy muy de acuerdo es con la afirmacion: “…el número de consultas disminuye“. Si no mal entiendo por cada accion que realizas se debe de generar una peticion o consulta al servidor, por otra parte no creo que “cargue” todos los datos de un jalon, sino imagina la cantidad de informacion con la que tendria que trabajar el cliente (lo cual haria la aplicacion mas pesada).

SQL Buddy: Administrador WEB para MySQL

Como sea es mas atractivo que phpMyAdmin en donde tiene que cargar toda la interfaz cada vez que realizas una accion. Pero si eso te molesta entonces mejor usa una aplicacion de escritorio y no una aplicacion WEB :D

Posts Relacionados

Optimizando MySQL

Monday, June 23rd, 2008

Como deciamos en los viejos tiempos “hay niveles“; y eso es cierto, hay momentos en los que las bases de datos pasan del nivel “lista de supermercado” a “lista de enenemigos de EU” y entonces tienes que plantearte seriamente el buscar mecanismos que te permitan optimizarla, ya sabes el tipico:

  • No uses DISNTINCT cuando uses o puedas usar GROUP BY
  • Crea INSERT o REPLACE en procesos batch y usa LOAD DATA antes que INSERT

Pues iendo sobre el mismo punto, via Sigt me entero de una interesante compilacion de herramientas (en MySQL Performance Blog) que podrias usar para optimizar y sacarle esas milesimas o diesmilecimas de segundo a tus consultas. Tal como indican en Sigt es interesante consultar los comentarios que aparecen en la lista en cuestion ya que indican algunas herramientas que no aparecen en la lista.

Posts Relacionados

Empiezan a Cerrar MySQL - Gracias SUN (Sarcasmo)

Thursday, April 17th, 2008

Vamos que no todo puede ser miel sobre hojuelas… pero seamos honesto, esta operacion (la compra de MySQL por parte SUN) empezo con mal olor (cuantos desarrolladores jamas vieron parte de la pasta que se pago por MySQL) y ahora a comenzado a apestar. ¿Que por que digo eso?, via The Inquirer ES me entero de lo siguiente:

En la conferencia de usuarios de MySQL que ha tenido lugar estos días, un ejecutivo de Sun ha confirmado que empezará a cerrar secciones del código base de MySQL. Las primeras en cerrar serán las soluciones de backup.

Recordemos que MySQL es (o era???) un desarrollo open source, o en castellano: Software Libre (bajo licencia GNU GPL), y la idea de empezar a cerrar “secciones” suena tonto e incluso risible, por que sino mal recuerdo (si me equivoco me dicen) uno de los propositos de la GNU GPL es “declarar que el software cubierto por esta licencia es software libre y ademas el protegerlo de intentos de apropiación que restrinjan esas libertades a los usuarios”.

Como sea, tal como menciona la gente de the Inquirer, es algo de lo mas “increible”:

Por tanto, estas funciones críticas sólo serán probadas por unos cuantos clientes. Darán a sus clientes de pago código real, verdadero y no probado. ¿Cómo es posible esto?

Y tu ¿que opinas de estos “sutiles” cambios que esta haciendo SUN con MySQL?

Posts Relacionados