/* CONEXION JDBC MEDIANTE DRIVER SQL SERVER 2000 DE MICROSOFT
EJERCICIO 2 */
import java.sql.*;
//CLASE PRINCIPAL
public class Jdbc_sqls3
{
private Connection con = null;
// constantes para utlizar en la cadena de conexion
private final String url = "jdbc:microsoft:sqlserver:"//";
private final String servidor= "localhost";
private final String puerto = "1433";
private final String db= "pubsSQL";
private final String user = "sa";
private final String pass = "chispa";
/* la contraseña es facilmente localizable, es recomendable
* solicitarla al usario en la aplicacion definitiva */
/* hacer que el driver use cursor en el lado del servidor
* lo que permite mas de una instruccion SQL activa en lla conexion */
private final String metodo = "cursor";
//METODO PRINCIPAL DE ENTRADA AL PROGRAMA
public static void main(String[] args) throws Exception {
Jdbc_sqls2 pruebaJdbc = new Jdbc_sqls2();
pruebaJdbc.mostrarDatos();
}
// METODO CONSTRUCTOR
public Jdbc_sqls3() {
try {
// cadena de conexion
String Url = ""+url+servidor+":"+puerto+";databaseName="+db+";selectMethod="+metodo+";";
System.out.println("\nJDBC SQL Server");
System.out.println("===============\n");
// registrar el driver JDBC usando el cargador de clases Class.forName
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
con = DriverManager.getConnection (Url,user,pass);
// si hay conexion activa
if(con!=null) System.out.println("Conexion con " + db + " creada con exito.");
}
catch(Exception pollo) {
System.out.println("Error: no se ha podido crear la conexion con " + db + ".\n"); }
}
// muestra informacion sobre el driver, SQL Server y catalogo de BD
public void mostrarDatos(){
DatabaseMetaData dm = null;
/* la interfaz ResultSet representa un conjunto de datos resultado de una consulta SQL
* para acceder a los registros se emplea un cursor que inicialmente apunta antes del primer registro
* para avanzar por los registros se emplea el metodo ResultSet.next() */
ResultSet rs = null;
try {
// si hay conexion activa
if(con!=null){
// obtener lnformacion de los distintos objetos
dm = con.getMetaData();
System.out.println("\nInformacion sobre el Driver:\n");
System.out.println("\tDriver Name: "+ dm.getDriverName());
System.out.println("\tDriver Version: "+ dm.getDriverVersion ());
System.out.println("\nInformacion sobre SQL Server:\n");
System.out.println("\tDatabase Name: "+ dm.getDatabaseProductName());
System.out.println("\tDatabase Version: "+ dm.getDatabaseProductVersion());
System.out.println("Catalogo disponible de bases de datos:\n");
rs = dm.getCatalogs();
//entero para contar por el catalogo de BD
int n = 1;
while(rs.next()){
/* ResultSet.getString() recupera como String el valor de la columna
* de la fila actual (columna referenciada por su nº de orden en la colección de columnas) */
System.out.println("\t" + n + " - " + rs.getString(1));
n+=1;
}
// liberar recursos
rs.close();
rs = null;
dm = null;
System.out.println("");
// ejecutar una sentencia SQL SELECT
Statement select = con.createStatement();
ResultSet nombres = select.executeQuery("SELECT TOP 10 * FROM authors");
System.out.println("Mostrar los 10 primeros registros de la tabla:");
System.out.println("");
//System.out.println("\tNOMBRE");
//System.out.println("");
int col = nombres.findColumn ("au_lname");
boolean seguir = nombres.next();
while (seguir) {
System.out.println ("\t" + nombres.getString(col));
seguir = nombres.next(); }
System.out.println("");
// liberar recursos
nombres.close();
select.close();
cerrarCon(); }
// si no hay conexion activa
else System.out.println("Error: no hay conexiones activas con " + db + ".\n"); }
catch(Exception pollo) {
System.out.println("Error: no se pueden mostrar los datos.\n"); }
}
//cerrar la conexion
private void cerrarCon(){
try{
if(con!=null)
con.close();
con=null; }
catch(Exception pollo){
System.out.println("\nError al cerrar la conexion con " + db + ".\n"); }
}
}