Home | Java |C # |SQL |Manuales |Videos |


44

Conectando SQL Server y Netbeans con JDBC – Parte 2

DibujoBuenos días antes que nada quiero pedir disculpas por demorarme en publicar este post …tuve algunos problemas con la PC pero bueno ya todo se arreglo y vamos a ver la segunda parte de la conexión entre SQL Server y NetBeans.Para poder llevar a cabo la conexión de nuestra base de datos con nuestra aplicación en Java es necesario que previamente hagamos algunos ajustes al SQL Server 2005 ; los ajustes que se deben hacer se encuentran en esta entrada (Si ya revisaron este post sería bueno que lo revisen nuevamente pues se ha hecho algunos ajustes).
Hecho esto el siguiente paso es configurar nuestro NetBeans para terminar con la conexión a la base de datos :
I.- REQUISITOS
  • Haber configurado el Microsoft SQL Server 2005 ; sino lo hiciste visita esta entrada :
  • NetBeans IDE
  • Conector de SQL Server para Java , que se puede descargar de aquí .
  • Una aplicación en Java, sino la tienes aquí crearemos una sencilla.
  • La base de datos Pubs, si no la haz agregado a tu base de datos , lo puedes hacer de esta forma.
II.- CREACIÓN DEL PROYECTO
  • Abrimos el NetBeans y creamos nuestro proyecto en el cual vamos a colocar un JPanel (PanelPrincipal) y un JFrame (Principal) ; vamos al PanelPrincipal al cual le damos el Border Layout  ; en el NORTE colocaremos un botón y en el CENTRO un Text Area :
numcommentsVE
OBSERVACIÓN :Antes de colocar un Txt Area es recomendable colocar un JScrollPane para poder visualizar el contenido que supera los limites del textArea

image   image 

  • Ahora nos vamos al JFrame llamado Principal en el cual agregaremos el Panel que hemos creado previamente:
        public Principal()
    {
    initComponents();
    add(new PanelPrincipal());
    setSize(500,400);
    }








III.- AGREGANDO EL JAR AL PROYECTO



  • Descomprimimos el conector que habíamos descargado previamente .image


  • Y encontraremos las siguientes carpetas :image


  • Agregamos las librerías sqljdbc y sqljdbc4 a nuestro proyecto ; para ello clic derecho el Libraries → Add JAR image    image







IV.- ESTABLECIENDO LA CONEXIÓN



  • Nos vamos al panel de nombre Panel Pricipal y importamos las siguientes librerías :
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.logging.Level;
    import java.util.logging.Logger;



  • Vamos a el diseño del gráfico y le damos doble clic en el boton Consultar  para programar su acción y le agregamos el siguiente código:
    private void btnConsultaActionPerformed(java.awt.event.ActionEvent evt) {                                            
    String connectionUrl = "jdbc:sqlserver://localhost:1433;" +
    "databaseName=pubs;user=sa; password=adminadmin;";
    // Declaramos los sioguientes objetos
    Connection con = null;
    Statement stmt = null;
    ResultSet rs = null;
    try {
    //Establecemos la conexión
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    con = DriverManager.getConnection(connectionUrl);
    // Create and execute an SQL statement that returns some data.
    String SQL = "SELECT * FROM AUTHORS";
    stmt = con.createStatement();
    rs = stmt.executeQuery(SQL);
    this.muestraData(rs);
    }
    catch (Exception e)
    {
    e.printStackTrace();
    }
    finally {
    if (rs != null) try { rs.close(); } catch(Exception e) {}
    if (stmt != null) try { stmt.close(); } catch(Exception e) {}
    if (con != null) try { con.close(); } catch(Exception e) {}
    }

    }



  • Finalmente vamos a crear nuestro método muestraData
    public void muestraData(ResultSet r) throws Exception
    {
    ResultSetMetaData rmeta= r.getMetaData();
    int numColumnas= rmeta.getColumnCount();//Cuántas columnas
    txtSalida.setText("");
    for(int i=1; i<=numColumnas; ++i)
    //obtiene nombre de columna
    txtSalida.append(rmeta.getColumnName(i) + "\t");
    txtSalida.append("\n");
    while(r.next())
    { // hasta fin de archivo
    for(int i=1;i<=numColumnas;++i)
    {
    txtSalida.append(r.getString(i) + "\t");
    }
    txtSalida.append("\n");
    }
    }



  • Hecho esto ejecutamos el proyecto y nos deberá salir lo siguiente :image


  • El ejemplo lo pueden descargar aquí : btn_6



 



 







V.- ERRORES



  • Hay que actualizar el SQL Server 2005 al service Pack 3 para que esto pueda funcionar.

44 Comentarios:

Anónimo dijo...

podria ser mas explicito acerca de la actualizacion del SQL al service pack 3?
Tengo Windows XP service pack 3 en mi pc, y el SQL 2005 instalado. Cómo lo instalo al Service pack 3 el SQL?

Anónimo dijo...

Excelente tu curso, sin embargo a pesar de seguir todos los pasos que indicaste, al presionar el boton me manda el siguiente error.

java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName
(Class.java:169)

De antemano te agradesco tus valiosos comentarios.

Felipe Faccinetto

Anónimo dijo...

Hola, finalmente pude resolver el problema, el cual consistia en que defini mal las librerias de SQL.

Gracias

Felipe Faccinetto
felipe.faccinetto@yahoo.com.mx

Anónimo dijo...

parece que no se importa
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
cuando le doy ejecutar solo sale el jframe pero
no la base de datos
me podria explicar con odbc
candacho-45@hotmail.com

Anónimo dijo...

francobleu@gmail.com - Hola, super tú manual, mira aplique toda la primera parte al tal cual lo has indicado, y tambien la parte número dos sin embargo, al ejecutar netbeans solo sale el frame, no si es que estoy relacionando mal el Jpanel con el frame o es un tema de conexion con la base de datos, ya que en relacion al conector de sql server para java solo importe las librerias de la manera en que lo indicaste (si pudieras resubir el project para descargarlo o indicarme algo)... Gracias

Anónimo dijo...

jp200m@yahoo.es - no puedo bajar el ejemplo me lo mandas por favor al correo gracias

Anónimo dijo...

a mi tambien porfaa fredy-2010-@hotmail.com

Anónimo dijo...

Holger Chapi

Excelente mi pana esta ayuda es excelente asi se deben publicar articulos, que sirban de ayuda no q le den incognitas.

Te felicito sigue asi y si tienes mas artículos con relacion a Netbeans y SQL Server 2005 enviame
holgerchapi@hotmail.com

Anónimo dijo...

gracias por esta información ta buena...sigue asiiiiiii..^_^

angel dijo...

hola amigo, muy bueno tu tutorial :) bueno todos me han servido demasiado :).
mira tengo la siguiente duda, estoy desarrollando una base de datos en sql server 2005 y su correspondiente interface en netbeans, yo anteriormente trabaje java pero con acces, aqui mi duda es la forma en que incerto datos a las tablas por medio de netbeans como inserto datos, modificar ect. yo tengos mis tablas en la base de datos y tengo mis procedimientos almacenados (store procedure o sp) para insertar datos, modificar ect, osea debo mandar los datos de la interfaz a esos procedimientos no? si es asi tendrias algun ejemplo de como hacer eso? aun que sea un solo dato dar de alta.
te agradesco mucho amigo, en verdad aprecio toda la informacion que compartes con nosotros

jhording dijo...

ajhording@hotmail.com - hey hombre esta genial tu aporte pero no se puede descargar el proyecto actualiza tu link de descarga gracias

sistemas0711 dijo...

Hola jhording , en la parte derecha de la web hay una sección que dice carpeta compartida ; dale clic en esa sección y te enviará directamente al skydrive en donde podrás encontrar el ejemplo.

Unknown dijo...

la conexion es la misma para conectarte a un servidor remoto????? o solo le cambio por ejmeplo en localhost la ip del servidor remoto ejemplo 10.18.38.40

Anónimo dijo...

muy buena oie pero tendras codigo para hacer bajas y modificar con java te dejo mi correo manuel__tnt4@hotmail.com la vdad si me urge mucho amigo

zonademanel dijo...

Excelente Aporte, tenia horas intentando hacer una conexión, el único problema es que solo tenia activada la Autenticacion con Windows.

public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
conexion myDbTest = new conexion();
myDbTest.displayDbProperties();
}

}

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 = "Priority";
private final String userName = "sa";
private final String password = "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) {
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();
}
}

}

Anónimo dijo...

Tengo una duda, todo lo que mencionaste es para hacer consultas desde una tabla previamente almacenada, pero, ¿hay forma de copiar algunos de los valores de la consulta para poder escribirlos en otra tabla nueva!?

Gracias

Mauricio dijo...

Espectacular! Muchísimas gracias por tomarte el tiempo de elaborar una guía tan clara y perfectamente revisada ya que la seguí al pié de la letra y funciona perfectamente.
Un saludo desde Uruguay.

Anónimo dijo...

Te felicitoo...muchisimas gracias por hacer una guia tan clara y muy detallada..estuve busque y busque y solo lo tuyo me funciono perfectamente
Muchisimas gracias nuevamente
un saludo desde mexico

Anónimo dijo...

Hola una pregunta, cuando intento agregar el jPanel en el jFrame no me agregada nada :S no me sale ningún error pero tampoco se muestra el jPanel, he puesto el código tal cual..

Andrea dijo...

Hola Chic@s excelente todo, peeeero... yo necesito ayuda URGENTE, tengo mi aplicación desarrollada en Java NetBeans y todo funciona perfecto, al correr la aplicación, pero si instalo esa aplicación en otro equipo que NO tiene instalado el motor de SQL Server y le paso la URL para que se conecte a través de la direccion IP de la maquina donde si tengo la base de datos y el SQL Server, simplemente no conecta.
Es decir, tengo un servidor con SQL Server y desde el cliente me quiero conectar a la BD del servidor con la siguiente URL: jdbc:sqlserver://IP_Servidor;databaseName=Nombre.
Y no logro conectarme, no me dice ningun error, nada...
Configure todo como aparece en estos tutoriales, si alguien puede ayudarme.
PLEASE!!!!!

John Jairo Rios Almanza dijo...

Buen aporte compañero...
Me gustaria que me ayudaras con algo.
Mi aplicación corre perfectamente desde NetBeans, se conecta a la base de dato, realiza sus consultas y todo. Pero en el momento que genero el .JAR y ejecuto la aplicacion este queda colgado en la primera consulta. Se queda bloqueado el aplicativo. Que puede pasar al respecto..?

Anónimo dijo...

Muchas gracias!!
Me ayudó bastante ;)

Anónimo dijo...

Enviame el Ejemplo si puedes a el_joalopo007@hotmail.com

Alex encarnacion salinas dijo...

gracias Estuvo genial el metodo que retorna la conexion a la base de datos....

Anónimo dijo...

Muchas gracias, el aporte es fabuloso... Una consulta,cómo se puede construir una clase para la cadena de conexion. La idea es que desde cualquier lugar del codigo se pueda llamar a es clase y concectarnos a la base.

Anónimo dijo...

marcelitasakura92@hotmail.com
me podria ayudar necesito modificar los datos introducidos en una columna de la base de datos echo desde netbeans por favor responder esto lo mas pronto posible al correo

Unknown dijo...

Andrea Canino: Un poco tarde, pero lo que en este caso deberias hacer si es que tienes en aplicativo instalado en el servidor, directamente te creas la misma catpeta en cualquier PC que tenga conexion de red al servidor, le pegas el .jar + lib + .bat el cual debe estar editado para llamar el aplicatvio y actualaziones desde el servidor, eso es lo que hicimos con un compañero con un aplicativo en java que instalamos en una empresa con 30 PC.

Anónimo dijo...

dice Oscar qe graciias pero es basuraa!!!
atta Oscaar eeeh!!!

Anónimo dijo...

mmm como se agrega el Border Layout?

Anónimo dijo...

Hola estoy desarrollando una aplicacion en android y para conectar me sale este error
Have no file for /usr/lib/jvm/java-6-openjdk-amd64/jre/lib/netx.jar
Have no file for /usr/lib/jvm/java-6-openjdk-amd64/jre/lib/plugin.jar
java.lang.ClassNotFoundException: com.microsoft.jdbc.SQLServerDriver
Error Trace in getConnection() : com.microsoft.jdbc.SQLServerDriver
Me gustaria q me ayuden con una solucion

Anónimo dijo...

oye esta muy bueno pero me puedes mandar el proyecto con la base de datos esque no lo puedo descargar o y otros que tengas porfa mi correo jelmex123451@hotmail.com

Unknown dijo...

gracias amigo muy buenos codigos y lo mejor muy bien explicados para los novatos gracias,,,

Unknown dijo...

bien excelente muy bueno muy bien explicado ej JTexArea pero y como se llena un JList con la misma consulta quie metodo se utiliza???

Programación para aprender dijo...

podrá actualizar el link de descarga esta roto

Unknown dijo...

mu buen tutorial y bien explicado y con imagenes lo mejor muchas gracias al que lo hizo de verdad me sacas de dudas......

Anónimo dijo...

Hola stoy haciendo un proyecto con jsp en el NetBeans IDE 7.3 con SQLServer 2008... implemente Beans y Daos como hago para aplicarlos a mis formularios de Altas, bajas y Modificianes(ABM's).
mi correo es velasco_alison@hotmail.com
Gracias por tu aporte muy bueno!!!

el viruz exe dijo...

te amo!! quien quiera que seas

Anónimo dijo...

genial, buen tutorial. Solo una anotacion: hay que batallar con el usuario, permisos, accesos, etc. hasta que por fin sale.

patricio dijo...

BUEN EJEMPLO

Unknown dijo...

me sirvio mucho.!!

Anónimo dijo...

hola, me sale error en
cn = DriverManager.getConnection(cadena);
tipos incompatibles, connection no puede ser convertido a connection, no doy con la solucion alguien podria ayudarme

package alfa;

import java.awt.*;
import java.sql.DriverManager;
import javax.swing.JInternalFrame;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
import javax.swing.table.DefaultTableModel;
import java.awt.event.KeyEvent;
import java.sql.*;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import java.math.*;
import java.awt.event.KeyEvent;
import java.util.*;

public class abc extends javax.swing.JInternalFrame {

private static DefaultTableModel tabla2;

private static connection cn;

public abc() {
tabla2=new DefaultTableModel();
initComponents();
conectar();
alfa.setSelected(true);
}




public static boolean conectar() {
//conectar a red
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String cadena="jdbc:sqlserver://localhost:49871;databaseName=JULIAN;user=sa;password=****";
cn = DriverManager.getConnection(cadena);

} catch (Exception ex) {
System.out.println(ex.getMessage());
JOptionPane.showMessageDialog(null,"no conectado");
return false;
}
JOptionPane.showMessageDialog(null,"conectado");
return true;
}




}

Anónimo dijo...

KYC Prro :v

Anónimo dijo...

Mi estimado, yo soy "cero" en Java y esto no es Java desde Cero.

Unknown dijo...

tu pagina se ve muy mal, el contenido ni siquiera es visible

Publicar un comentario

Ingresa tu comentario .... con el siguiente formato EMAIL - COMENTARIO para poder responderte :