jueves, 28 de febrero de 2008

Accediendo a SQLServer2005 Express con JDBC - Parte 2 Configuraciones en Netbeans y creación de una clase ConnectionFactory para acceso a base de dato

En esta segunda entrega veremos en primer lugar la implementación de una clase que nos permitirá manejar las operaciones de conexiíon con SQL Server 2005 ( y con otras más):

package sqlserver2005;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.PreparedStatement;
import java.sql.CallableStatement;
import java.sql.ResultSet;
import java.sql.SQLException;


public class ConnectionFactory {
public final static int TYPE_MSSQL = 10;
public final static int TYPE_MYSQL = 20;
public final static int TYPE_ORACLE_10G_EX = 30;
public final static int TYPE_MSSQL2005 = 40;
private String driver;
private String url;

/**
* Constructor que carga el driver jdbc para poder trabajar con la base de datos
*
* @param typeDBMS tipo de base de datos a utilizar
* @param hostName IP o nombre del servidor de base de datos
* @param databaseName nombre de la base de datos con la que deseamos trabajar
*/
public ConnectionFactory( int typeDBMS, String hostName, String databaseName ) {
switch( typeDBMS ){
case 10:{ // Para SQL Server 2000
driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
url = "jdbc:microsoft:sqlserver://" + hostName + ":1433;DatabaseName=" +
databaseName;
break;
}
case 20:{ // Para MySQL 5.0
driver = "com.mysql.jdbc.Driver";
url = "jdbc:mysql://" + hostName + ":3306/" +
databaseName;
break;
}
case 30:{ // Para en Oracle 10g Express Edition
if( databaseName.equals( "" ) )
databaseName = "XE";
else
databaseName = "XE";
driver = "oracle.jdbc.driver.OracleDriver";
url = "jdbc:oracle:thin:@//" + hostName + ":1521/" + databaseName;
break;
}
case 40:{ // Para SQL Server 2005 Express Edition
driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
url = "jdbc:sqlserver://" + hostName + ":1433;DatabaseName=" +
databaseName;
break;
}
}
try{
// cargar la clase Driver
Class.forName( driver );
}catch( ClassNotFoundException cnfe ){
System.out.println( "Error: exception loading driver class" );
}
}

/**
* Devuelve un objeto de tipo Connection válido
*
* @param user usuario de la base de datos
* @param password clave del usuario de la base de datos
* @return Connection
*/
public Connection getConnection( String user, String password ) throws SQLException
{
return DriverManager.getConnection( url, user, password );
}// fin del metodo getConnection

/**
* Metodo para liberar recursos de memoria, cerrando la conextion con la base
* de datos
*
* @param con parametro de tipo Connection
*/
public static void close( Connection con ){
try{
con.close();
}catch( SQLException sqle ){
showMessageError( sqle );
}
}// fin del método closeConnection

/**
* Cierra un objeto ResultSet (Registros)
* @param con parametro de tipo ResultSet
*/
public static void close( ResultSet rs ){
try{
rs.close();
}catch( SQLException sqle ){
showMessageError( sqle );
}
}// fin del método closeConnection


/**
* Cierra un objeto Statement (Consulta)
* @param con parametro de tipo Statement
*/
public static void close( Statement stmt ){
try{
stmt.close();
}catch( SQLException sqle ){
showMessageError( sqle );
}
}// fin del método close

/**
* Cierra un objeto Statement (Consulta)
* @param con parametro de tipo Statement
*/
public static void close( PreparedStatement ps ){
try{
ps.close();
}catch( SQLException sqle ){
showMessageError( sqle );
}
}// fin del método close

/**
* Cierra un objeto Statement (Consulta)
* @param con parametro de tipo Statement
*/
public static void close( CallableStatement cs ){
try{
cs.close();
}catch( SQLException sqle ){
showMessageError( sqle );
}
}// fin del método close

/** muestra un mensaje de error en consolo, según sea el caso */
private static void showMessageError( SQLException sqle ){
System.out.println( "Error:" +
"\nmensaje: " + sqle.getMessage() +
"\nSQLState: " + sqle.getSQLState() +
"\nVencorCode: " + sqle.getErrorCode() + "\n" );
}// fin del método showMessageError
}


martes, 26 de febrero de 2008

Accediendo a SQLServer2005 Express con JDBC - Parte 1 Configuracion de SQL Server 2005 Express

Introduccion
En este tutorial veremos como conectarnos y mostrar datos de SQL Server 2005 Express con JDBC.

Todo esta dividido en 4 partes:

  1. Configuracion de SQL Server 2005 Express
  2. Configuraciones en Netbeans y creación de una clase ConnectionFactory para acceso a base de datos.
  3. Operaciones SQL
  4. Posibles problemas
Requerimientos:
  1. Microsoft SQL Server JDBC Driver
    La última version, visite Microsoft SQL Server 2005 JDBC Driver.
  2. NetBeans con JRE (Java Runtime Environment) version 1.5 o superior
    Puede encontrar en NetBeans.org.
Configuración paso a paso:
  • SQL Server 2005 Express
Por defecto SQL Server 2005 no permite conexiones remotas y esta deshabilitado ls cuenta sa, asi que nosotros tenemos que hacer los cambios respectivos de forma manual, si usted trata de conectarse se le mostrará un mensaje de error por ejemplo sea cual sea el nombre de su servidor:







Otro problema por defecto que puede surgir cuando queremos conectarnos es que las conexiones TCP/IP están deshabilidatas en SQL Server 2005 Express. Asi que JDBC no se puede conectar y usted puede recibir la siguiente exception …
     Network error IOException: Connection refused: connec

Ahora vamos a configurar estas dos opciones:

1. Habilitar TCP/IP
  1. Click Inicio > Todos los programas > Microsoft SQL Server 2005 > Herramientas de configuracion > SQL Server Configuration Manager.
  2. En el panel izquierdo de la ventana d e SQL Server Configuration Manager, expandir Configuracion de red de SQL Server 2005 y click en Protocolos de SQLEXPRESS.
  3. En el panel derecho de la ventana de SQL Server Configuration Manager,Click derecho en TCP/IP y click para habilit ar.
  4. O través click derecho en TCP/IP y c lick en propiedades.
  5. En la ventana de propiedades deTCP/IP, click en el panel direcciones ip, y expanda IPALL.
  6. Debajo de IPALL, borrar el campo de TCP Dynamic Ports y entonces ingrese un numero de puerto en el campo TCP Port. Usualmente, tiene el valor por defecto de 1433.
  7. En la ventana de propiedades TCP/IP, click OK.
  8. En el panel izquierdo de la ventana SQL Server Configuration Manager, click en Servicios de SQL Server 2005.
  9. En el panel derecho de la ventana de SQL Server Co nfiguration Manager,click derecho en SQL Server (SQLEXPRESS) y click en reinicar.

2. Habilitar la autenticación por conexión remota

Para resolver este problema. Uno es habilitar el modo de autenticación ambos SQL Server y Windows en el servidor y la otra es habilitar la conexión remota en el nave gador de SQL Server.
      • Chekear que usted tenga permitido el modo bo th SQL Server and Windows Authentication mode (Si usted no usa el modo Windows Authentication). Para la instancia del usuario ‘sa’.
1. Iniciar sesion usando SQL Server Management Studio Express al Servidor SQL y en modo Windows Authentication. Esto podría usar su cuenta de Windows para autenticarse con SQL Server.
2. En el objeto Explorador, click derecho en el nombre de instancia y seleccionar propiedades.


3. Seleccionar la página Security y cambiar la autenticación del servidor al modo SQL Server and Windows Authentication mode y presionar el boton Ok.
4. Click derecho otravés en el nombre de la instancia, seleccionar Restart para reiniciar el Servicio de SQL Server.

5. Esto es todo. Tienes habilitado el modoSQL Server and Windows authenticat ion, ahora usted puede iniciar sesion en SQL Server con su cuenta de Windows o su cuenta creada.

      • Chekear que usted tenga habilitado la conexión remota en Configuración de superficie de SQL Server
1. Abrir Configuración de superficie de SQL Server.


2. Seleccioar Configuracion de superficie para Servicios y Conexiones.


3. En el lado izquierdo, expandir su instancia de SQL Server -> Motor de base de datos -> Conexiones Remotas. En el lado derecho, seleccionar Conexiones locales y remotas -> Usar TCP/IP y canalizaciones con nombre.

4. En el lado izquierdo, seleccionar Explorador de SQL Server -> Servicio.
En el lado derecho, si el tipo de inicio esta Deshabilitado, usted necesita cambiarlo a Automatico. Clik en Aceptar.

5. Iniciar sesion usando SQL Server Management Studio Express al Servidor SQL y en modo Windows Authentication.

6. En el panel Object Explorer , expandir Security / nodo Logins.

7. Seleccionar el usuario "sa".

8. Click derecho en el usuario "sa"->propiedades e ingresar password para este usuario.


9. Luego seleccione la página Status y dele Click en la opcion enable de Login, Click en Ok

10. Click derecho otravés en el nombre de la instancia, seleccionar Restart para reiniciar el Servicio de SQL Server.

Probando lo hecho:

Usted ha finalizado la configuracion. Ahora intente iniciar sesion en su Servidor SQL de forma remota o en su computadora usando el modo SQL Server authentication.


Inicio de sesion a SQL Server con éxito.


sábado, 9 de febrero de 2008

Card PHP Cheat Sheet

Emezeta a realizado un resumen muy bueno de las funciones de php añadiendo pequeñas descripciones muy útiles al momento de buscar alguna información rápida.

Chuleta completa de PHP