verificación google

miércoles, 21 de enero de 2009

Conector JAVA contra un ODBC

Necesitaba hacer una conexión entre una aplicación de escritorio PHP con PHP+GTK (cuando tenga un rato publicaré algo sobre este tema). Pero no era capaz de conectar PHP con un ODBC del sistema, ya que el paquete PHP+GTK que uso para ejecutar la aplicación no contenía la librería necesaria para hacer una conexión ODBC.

Así que opté por crearme un conector en JAVA. Solo necesitaba una aplciación "tonta" que devolviera dos columnas de una tabla de una base de datos SQL Server. Así que programé esta clase:
import java.sql.*;
public class Lanzadora {
/**
* @param args
*/
public static void main(String[] args) throws Exception {
String DSN,Usuario,Clave,Opcion;
try{
DSN = args[0];
Usuario = args[1];
Clave = args[2];
Opcion = args[3];
}catch(Exception ex){
ayuda();
return;
}
Connection connection = DriverManager.getConnection("jdbc:odbc:"+DSN,Usuario,Clave);
if (connection != null) {
if(Opcion.compareTo("listado")==0)
listado(connection);
if(Opcion.compareTo("debug")==0)
infoConexion(connection);
}else
System.out.println("No fue posible establecer la conexión.");
}

public static void infoConexion(Connection connection) throws Exception {
System.out.println();
System.out.println("Successfully connected");
System.out.println();
// Meta data
DatabaseMetaData meta = connection.getMetaData();
System.out.println("Driver Information");
System.out.println("Driver Name: "+ meta.getDriverName());
System.out.println("Driver Version: "+ meta.getDriverVersion());
System.out.println("Database Information ");
System.out.println("Database Name: "+ meta.getDatabaseProductName());
System.out.println("Database Version: "+meta.getDatabaseProductVersion());
}

public static void listado(Connection connection)throws Exception{
// Get connection
Statement sentencia = connection.createStatement();
// listado de DNIs y CLAVES
String sql="SELECT campo1,campo2 FROM tabla WHERE campo3>0";
ResultSet result=sentencia.executeQuery(sql);
while(result.next())
System.out.println(result.getString(1)+";"+result.getString(2)+".");
}

public static void ayuda(){
System.out.println("Necesita definir algunos argumentos para que la aplicación funcione correctametne.");
System.out.println("1º nombre del DSN a utilizar");
System.out.println("2º nombre del usuario de la base de datos Epsilon");
System.out.println("3º contraseña del usuario");
System.out.println("4º opcion");
System.out.println(" listado (muestra el listado de DNIs y Claves)");
System.out.println(" debug (valida conexión)");

}
}

Como podéis ver solo necesito pasarle como parámetros el nombre del DSN, el usuario, la clave del usuario y la opción que quiero usar (listado o debug). Esto me devolverá en la salida estandar el listado como si fuera un fichero CSV.

Para ejecutar la clase y hacerla externa al entorno de desarrollo necesitaremos exportarla a fichero JAR. Yo particularmente uso como IDE Eclipse y en Eclipse para exportar un proyecto como JAR es muy sencillo, solo vas a "Archivo->Exportar...->Como fichero JAR" y sigues las instrucciones del asistente.

Una vez que tenemos el fichero .jar, solo tenemos que ejecutarlo con los parámetros correcto para obtener la relación de campo1 y campo2 de la base de datos.
java -jar fichero.jar < nombre del DSN > < usuario > < clave > < listado|debug >

martes, 20 de enero de 2009

rdesktop a pantalla completa sin perder funcionalidades

No conseguía hacer una conexión a un escritorio remoto Windows desde mi Ubuntu y después poder volver al escritorio de mi Ubuntu sin necesidad de cerrar la sesión del Windows, así que comencé a darle vueltas a ver que solución le podía dar. Y creo que la solución es buena.

Ejecutando desde linea de comandos directamente, utilicé el comando:
rdesktop -u Administrador -g 1024x720 -D xxx.xxx.xxx.xxx:3389
Este comando os abrirá la conexión con el escritorio remoto en una resolución de 1024x720, el standar es 1024x768. Así que ese puñado de pixeles que nos faltan son los de los paneles de Gnome (superior e inferior).

Al quitarle el decorador de ventanas (-D) no nos aparecerá el borde del terminal y simplemente nos tapará todo el escritorio dejando libres los dos paneles, de esta forma podemos seguir accediendo a las aplicaciones que tengamos en nuestro Ubuntu.

Yo tengo una pantalla pequeña (1024x768), si utilizas una pantalla con más resolución solo tendrás que ajustar el número de pixeles de alto, para dejar visibles los paneles de Gnome.

Ya solo tendrás que crear un lanzador para tener mucho más accesible la comunicación con el Windows que estás configurando.