viernes, 21 de septiembre de 2012

Investigacion Administracion BD

CONEXION DE JAVA A SQL SERVER 2008 MEDIANTE JDBC

¿Qué es JDBC?

Una de las desventajas principales de la versión 1.0.2 de Java era que no tenía soporte alguno para el acceso a bases de datos. Esto limitó la utilidad de Java en el campo de los negocios. Sin embargo, a partir de la versión 1.1 del JDK, Java proporciona un soporte completo para bases de datos por medio de JDBC (Java Database Connectivity). JavaSoft, la subsidiaria de Sun Microsystems referente a Java, introdujo JDBC el cual permite que los programas Java se conecten a cualquier base de datos utilizando diversos controladores (conocidos también como drivers) y un conjunto de objetos y métodos de la API (Interfaz de Programación de Aplicaciones) de Java.

  • Arquitecturas JDBC en dos capas
    La aplicación que accede a la base de datos reside en el mismo lugar que el driver de la base de datos. El driver accederá al servidor donde corra el motor de base de datos.
    En este caso, será el driver el encargado de manejar la comunicación a través de la red.
    En el ejemplo, una aplicación java corriendo en una máquina cliente que usa el driver también local. Toda la comunicación a través de la red con la base de datos será manejada por el driver de forma transparente a la aplicación Java.
  • Arquitecturas JDBC en tres capas.
    Una aplicación o applet corriendo en una máquina y accediendo a un driver de base de datos situado en otra máquina. Ejemplos de esta situación:
  1. Un applet accediendo al driver a través de un Web Server
  2. Una aplicación accediendo a un servidor remoto que comunica localmente con el driver
  3. Una aplicación comunicando con un servidor de aplicaciones que accede a la base de datos por nosotros.


 Para establecer una conexión de base de datos SQL Server mediante NetBeans 7.0.1 a través de JDBC habrá que seguir los siguientes pasos en un sistema operativo Windows:


1. Descargarse el driver oficial de Microsoft SQL Server JDBC .
2. Una vez descargado, hay que establecer en las propiedades de nuestro proyecto el driver (Libraries> Compile) y pulsar sobre añadir JAR/Carpeta.

3. Buscar el archivo 'sqljdbc.jar' y seleccionarlo.
En estos tres pasos habremos establecido nuestro driver sql server para nuestro proyecto, de manera que ya se podrá establecer la conexión contra SQL Server a través de JDBC:
1. Importar la librería java.sql.*;
2. Establecer la cadena de conexión y demás parámetros:
JAVA:



  1. try {
  2.           Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
  3.           String  connectionUrl = "jdbc:sqlserver://localhost:1433;" +
  4.             "databaseName=Northwind;user=sa;password=123456;";
  5.           Connection  con = DriverManager .getConnection(connectionUrl);
  6.         } catch (SQLException  e) {
  7.             System .out.println("SQL Exception: "+ e.toString());
  8.         } catch (ClassNotFoundException  cE) {
  9.             System .out.println("Class Not Found Exception: "+ cE.toString());
  10.         }



    CODIGO 


    public class conexion {

        private java.sql.Connection con=null;
        private final String url ="jdbc:sqlserver://";
        private final String serverName ="localhost";
        private final String portNumber = "1433";
        private final String databaseName = "participantes";
        private final String userName = "";
        private final String password = "";
        // Indica al controlador que debe utilizar un cursor de servidor, // lo que permite más de una instrucción activa // en una conexión.
        private final String selectMethod = "cursor";

        private String getConnectionUrl() {
            return url + serverName + ":" + portNumber + ";databaseName=" + databaseName + ";selectMethod=" + selectMethod + ";";
        }

        private java.sql.Connection getConnection() {
            try {
               Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
                con = java.sql.DriverManager.getConnection(getConnectionUrl(), userName, password);
                if (con != null) {
                    System.out.println("Conexión correcta.");
                }
            } catch (Exception e) {
                e.printStackTrace();
                System.out.println("Error de seguimiento en getConnection() : " + e.getMessage());
            }
            return con;
        }

        /* Mostrar las propiedades del controlador y los detalles de la base de datos */
        public void displayDbProperties() {
            java.sql.DatabaseMetaData dm = null;
            java.sql.ResultSet rs = null;
            try {
                con = this.getConnection();
                if (con != null) {
                    dm = con.getMetaData();
                    System.out.println("Información del controlador");
                    System.out.println("\tNombre del controlador: " + dm.getDriverName());
                    System.out.println("\tVersión del controlador: " + dm.getDriverVersion());
                    System.out.println("\nInformación de la base de datos ");
                    System.out.println("\tNombre de la base de datos: " + dm.getDatabaseProductName());
                    System.out.println("\tVersión de la base de datos: " + dm.getDatabaseProductVersion());
                    System.out.println("Catálogos disponibles ");
                    rs = dm.getCatalogs();
                    while (rs.next()) {
                        System.out.println("\tcatálogo: " + rs.getString(1));
                    }
                    rs.close();
                    rs = null;
                    closeConnection();
                } else {
                    System.out.println("Error: No hay ninguna conexión activa");
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            dm = null;
        }

        private void closeConnection() {
            try {
                if (con != null) {
                    con.close();
                }
                con = null;
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

     public static void main(String[] args) {
          conexion myDbTest = new conexion();
            myDbTest.displayDbProperties();
        }

    }


    }