viernes, 28 de enero de 2011

Insertar varias filas en MySQL con Java

Ayer me preguntaban como se podían meter varias filas directamente en una base de datos MySQL a través de Java. A mi, lo único que se me ocurrió es preparar un string con tantos valores como filas queramos meter:

String s = "INSERT INTO table (aa, bb ,cc) values (?,?,?), (?,?,?) , (?,?,?) , (?,?,?)...."

y así tantas veces como filas queramos meter. Todo esto se podría automatizar con un método que devolviera ese string automáticamente pasándole el número de filas que quisiéramos (escrito rápido y sin mucha comprobación):

public String createInsert(int rows){
   String s = "INSERT INTO table (aa, bb, cc) values ";
   for(int i = 0; i < rows; i++){
      s += "(?,?,?),"
   }
   //Aquí habría que quitar la última coma
}

Pero hoy, la misma persona que me preguntó me informa que todo esto ya está preparado en Java y que se puede hacer de manera mucho más sencilla... así que aquí dejo una mejor solución (lo de antes no eran más que indagaciones):

String s = "INSERT INTO table (aa, bb ,cc) values (?,?,?)"
PreparedStatement st = connection.prepareStatement(s);
int rows = 20;
for(int i = 0; i < rows; i++){
   st.setString("a string")  //or whatever value: int, date, null
   st.setString("a string")  //or whatever value: int, date, null
   st.setString("a string")  //or whatever value: int, date, null
   st.addBatch();      //añadir una fila
}
st.executeBatch();

lunes, 24 de enero de 2011

Grub.cfg en lugar de menu.lst

Donde dije digo digo Diego... y dónde antes se editaba /boot/grub/menu.lst ahora se edita /boot/grub/grub.cfg

Así que si quieres cambiar las opciones de arranque de GRUB de tu Ubuntu 10.04, ya sabes, no busques por menu.lst porque no lo encontrarás, busca y edita grub.cfg en su lugar

domingo, 2 de enero de 2011

WhatsApp para Android

Hoy he descubierto la aplicación WhatsApp para mi Android. Había oído hablar de ella, pero no había hecho mucho caso pues no me parecía que ofreciera mucha mejora con respecto a otros servicios ya existentes como mandar un correo electrónico o el propio chat de gtalk (los dos te notifican de la llegada de un nuevo correo y de un nuevo chat).

 Sin embargo, hablando con dos amigos, que me han convencido, tienen toda la razón en que:
  • WhatsApp permite separar: mientras que los correos te llega una notificación por cada uno, con WhatsApp sólo te llega notificación cuando alguien te escribe... no quieres tener que estar leyendo todos los correos que te llegan al momento por si alguien te quiere decir algo.
  • Parece ser que el GTalk no va del todo fino en los iPhone
  • A mucha gente le da pereza escribir un email, mientras que la interfaz de esta aplicación invita a que se use más como SMS.
La cosa es que finalmente me la he instalado. Es necesario registrarse con nuestro número de teléfono, de manera que únicamente podremos tener una cuenta asociada a nuestra tarjeta. Y el primer "fallo" llega aquí:
  • No es gratuita. Se adquiere una licencia que nos permite utilizar la aplicación durante un año, tras el cual se deberá pagar por el uso de la misma (no estoy seguro de la cantidad pero me parece haber oído que algo así como 1 euro mensual... quizá me confunda y en su página no lo encuentro)
Cuando se verifica y activa la cuenta, llega el segundo fallo:
  • Detecta que tengo una ROM distinta de la de fábrica y dice que puede ser incompatible... a pesar de ello sigo adelante
La inicialización tarda bastante, yo de hecho he tenido que apagar el teléfono y volverlo a encender cansado de esperar (más de 10 minutos??).

Otro fallo, este de privacidad:
  • De buenas a primeras, puedes ver a todos los contactos que tienen la aplicación instalada, lo que quiere decir, que a partir del momento que la instalas, tu también saldrás en todas las listas de la gente que se la instale... Debería de haber una opción de privacidad para no aparecer en dichas listas automáticamente y poder ir añadiendo a los usuarios que quieras una vez ellos te hayan aceptado. Aunque luego se puede bloquear a usuarios, no es lo mismo.
Más fallos, de funcionamiento:
  • No sé si será debido a mi ROM y las incompatibilidades que puedan existir, pero al abrir la lista de contactos de WhatsApp, se me queda colgada y tengo que volver a abrirla para que funcione... esto me ha pasado sobretodo al principio y aleatoriamente, bastantes veces. También pasa esto en otras pantallas, pero menos... ya digo que no sé si será por mi ROM o no.
  • No hay manera de desactivar las notificaciones... hay que entrar en la elección del sonido y elegir "Ninguno", pero no hay un botón para desactivarlo y luego poder volverlo a activar, que sería mucho más rápido.
  • Igual que en el caso anterior, no hay manera de desactivar la aplicación momentaneamente en casa de que tengamos poca batería o que simplemente nos de la gana desactivarla... por lo que he visto, creo que la única manera sería desinstalándola... o quitando la conexión de datos claro...
  • Y por último, por la manera en que funciona la aplicación, supongo que gastará "bastante" batería. En los iPhone funciona a través de los mensajes "push", pero en android ese tipo de mensajes no están implementados todavía (por lo que tengo entendido) por lo que tendrán que tener otro sistema para la recepción de los mensajes que implicará un mayor consumo de batería.
Por tanto, y resumiendo, la aplicación en sí está bien, la idea es muy buena y da algo más que lo que pueden ser las notificaciones del correo o de otros medios de chat (ver el artículo del Androide Libre para más info). Sin embargo, el funcionamiento de la misma no es el mejor, echando en falta opciones de privacidad y sobre todo la posibilidad de poder suspender la aplicación temporalmente.