Conexión JAVA JDBC – ODBC

Ejemplo práctico de una conexión a una Base de Datos desde Java usando JDBC-ODBC. Te mostramos dos Ejemplos, uno para Consultar Datos y el otro para Insertar.

Ejemplo 1: Consulta a la Base de Datos

1.      Vamos a crear una Clase llamada “JdbcEjem1” la cual tendría la siguientes estructura:

public class JdbcEjem1 {   
    public JdbcEjem1() {    }
   
    public static void main(String[] args) {          
   }   
}
2.      Debemos importar la siguiete librería:        

            import java.sql.*;
3.      Dentro del método main vamos a declarer las sigiuentes variables:

            Connection con;
            Statement sentencia;
4.      Seguidamente vamos a cargar el Driver usando las siguientes sentencias:

            try{
                        Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver”);
             }
             catch(Exception e)
            {
              System.out.println(”No se ha cargado  Driver JDBC-ODBC”);
            }
5.      Para realizar la conexión a la Base de datos se lo realiza de la siguiente manera:

            con = DriverManager.getConnection(”jdbc:odbc:odbcEjem”, “”, “”);
notemos que el método getConnection() recibe tres argumentos, el primero es el que indica el URL de conexión que para nuestro caso es jdbc:odbc y seguido de ello escribimos el nombre del Origen de Datos que hemos creado para nuestro ejemplo “odbcEjem”, que es la base de datos a la cual nos vamos a conectar.

Los otros dos argumentos son el nombre de Usuario y Pasword respectivamente, en caso de que existieran, caso contrario irían vacíos como en este ejemplo.

6.      Para ejecutar una sentencia se debe instanciar la variable de tipo Statement de la siguiente manera:

                         sentencia = con.createStatement();
       
7.      Una vez instanciada la variable, podemos ejecutar una consulta, así:

String sql=”select * from alumno;”;
ResultSet result=sentencia.executeQuery(sql);
8.      Y para mostrar los datos que devuelve la ejecución de la consulta utilizamos lo siguiente:

while(result.next()) {
   System.out.print (”\n”+ result.getString(1) + “  ” +result.getString(2)+ “  ” +result.getString(3));
}
lo que hace es ejecutar un bucle mientras exista un resultado que mostrar, para mostrar la columna 1 del resultado producido al ejecutar la consulta se hace uso de: result.getString(1) y así mismo con el resto de columnas., como se puede observar en las líneas de código anterior.

9.      Se cierra la conexión a la Base de Datos usando: con.close();

10.  El código finalmente quedaría de la siguiente manera:

import java.sql.*;
public class JdbcEjem1 {
   
    public JdbcEjem1() {    }   
    public static void main(String[] args) {
       Connection con;
       Statement sentencia;
       try{
           //cargar el Driver
            Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver”);
          }

          catch(Exception e)

          {

              System.out.println(”No se ha cargado  Driver JDBC-ODBC”);

          }

       try{

       

        //establecer la conexion

        con = DriverManager.getConnection(”jdbc:odbc:OdbcEjem”, “”, “”);

       

        //para ejecutar una sentencia de consulta:

        sentencia = con.createStatement();
        String sql=”select * from alumno;”;
        ResultSet result=sentencia.executeQuery(sql);
        //para mostrar el resultado de la consulta

            while(result.next()) {
                System.out.print (”\n”+ result.getString(1) + “  ” +result.getString(2)+ “  ” +result.getString(3));
            }        
        //para cerrar la conexion

        con.close();

         }

         catch(Exception e)

         {

             System.out.println(”conexion no establecida”);

         }         
   }   
}

Ejemplo 2: Insertar Datos

1.      Se deben seguir los pasos del 1 al 6 solamente que a esta clase la llamaremos JdbcEjem2

2.      Para insertar los datos habría que hacer uso de la siguiente sentencia:

String sql=”insert into alumno(cedula,nombre,edad,nivel) values(1704,’Laura’,23,’cuarto’);”;
      
sentencia.executeUpdate(sql);
notar que a diferencia del ejemplo 1 en esta ocación se hace uso del método: executeUpdate() ya que este es el método usado para eliminar, actualizar e insertar datos.

3.      El código finalmente quedaría de la siguiente manera:

import java.sql.*;
public class JdbcEjem2 {
   
    public JdbcEjem2() {
    }
    public static void main(String[] args) {
       Connection con;
       Statement sentencia;
       try{
            Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver”);
       }

       catch(Exception e)

       {

           System.out.println(”No se ha cargado  Driver JDBC-ODBC”);

       }
       try{
        con = DriverManager.getConnection(”jdbc:odbc:OdbcEjem”, “”, “”);
        sentencia = con.createStatement();
        String sql=”insert into alumno(cedula,nombre,edad,nivel) values(1704,’Laura’,23,’cuarto’);”;
        sentencia.executeUpdate(sql);
        con.close();
       }

       catch(Exception e)

       {

           System.out.println(”conexion no establecida”);

       }

    }   

}

 


19 comentarios sobre “Conexión JAVA JDBC – ODBC”

  1. Gabriel dijo:

    Voy a probar este codigo gracias

  2. edgar dijo:

    necesito un ejemplo de eliminacion, les agradeceria me ayudaran

  3. pablo dijo:

    para eliminar debes hacer lo mismo que para insertar o actualizar datos, solamente debes escribir la sentencia SQL de eliminacion, por ejemplo:

    delete NombreTabla where campo=’algo’

    el codigo seria algo parecido a esto:

    try{
    con = DriverManager.getConnection(”jdbc:odbc:OdbcEjem”, “”, “”);
    sentencia = con.createStatement();
    String sql=”delete alumno where edad=23″;
    sentencia.executeUpdate(sql);
    con.close();
    }

    catch(Exception e)

    {

    System.out.println(”conexion no establecida”);

    }

  4. victor dijo:

    neceito realizar una base de datos en donde consulte modifique y elimine los datos ….como hago para bajar el controlador JDBC-ODBC la aplicacion a usar es access 2003. Gracias

  5. pablo dijo:

    Para crear una conexion ODBC debes hacer:
    - en el “Panel de control”->HerramientasAdministrativas->“Origenes de datos ODBC”
    - Selecciona “DNS del Sistema”
    - Pulsa el Boton “Agregar”
    - del listado que aparece busca: “Microsoft Access Driver(mdb)”
    - ponle un nombre a tu origen de datos, por Ejemplo: “odbcEjemp”, que es la que usamos en el ejemplo del Blog.
    - Pulsa el Boton “Seleccionar”, busca tu base de datos en Access y ya tienes lista la conexion ODBC.

    El driver JDBC-ODBC ya viene con el JDK que estes usando.

  6. victor dijo:

    gracias estuve cacharriando en el pcy encontre el ODBC

  7. jheyson vela a. dijo:

    como eliminar datos de la clase notebook del metodo public int numberOfNotes()
    {
    return notes.size();
    }

  8. pablo dijo:

    no esta muy claro lo que solicitas, si puedes ser un poco mas especifico te podria ayudar

  9. Evelyn dijo:

    hola, yo tengo el siguiente codigo para insertar en mi bd:
    public void ingresar_horas(){
    int horas=0;

    this.conectabd();
    try{
    String sqlstring = “INSERT INTO presupuesto(Horas_Anuales_Presupuestadas)VALUES(’”+horas+”‘)”;
    stt.executeUpdate(sqlstring);
    stt.close();}
    catch(Exception e){
    System.out.println(e);
    }
    }

    y por otro lado tengo un .java que llama esta funcion asi:

    public int Log_Horas(){

    int resp;
    resp=this.connect.ingresar_horas(); //aqui me da el error

    }

    ayuda por favor soy novata programando, me da error y no tengo ni idea como solucionarlo :(

  10. pablo dijo:

    Seria bueno que indiques como te estas conectando a la Base de Datos o que nos escribas el mensaje de error que te sale al ejecutar.

    De lo que me puedo dar cuenta es que envias el valor de la variable “horas”, si tu dato en la base de datos es un dato numerico, no debes enviar con las apóstrofes, solamente debes poner:
    (”+horas+”)”;

  11. Evelyn dijo:

    Gracias por tu consejo, pero no me da error ya, solo que el dato no se inserta en la bd, alli va el codigo de donde hago la conexion:

    public boolean conectabd(){
    boolean resp=false;
    try{
    Class.forName(”org.gjt.mm.mysql.Driver”).newInstance();
    con=DriverManager.getConnection(”jdbc:mysql://localhost:3306/bdadvisory”,”root”,”16299120″);
    resp=true;
    }catch(Exception e){
    System.out.println(”No se puede realizar la conexión”);
    System.out.println(e);
    }
    return resp;
    }

    luego en esta funcion que esta en la misma clase:

    public void ingresar_horas(String horas){

    this.conectabd();
    try{
    String sqlstring = “INSERT INTO presupuesto(Horas_Anuales_Presupuestadas)VALUES(”+horas+”)”;
    stt.executeUpdate(sqlstring);
    stt.close();}
    catch(Exception e){
    System.out.println(e);
    }
    }

    y esto lo llamo desde la pagina jsp asi:

    String horas=request.getParameter(”horas”);
    conexionbd.ingresar_horas(horas);

    los datos son pasados a un post pero no se insertan en la bd, porfa si ves mi error hazmelo saber lo antes posible, muchisimas gracias de antemano!

  12. pablo dijo:

    Dentro de tu metodo que inserta pon un System.out.println(sqlsring), copia la linea que te sale y ejecutala directamente en tu base de datos, puede ser que estes armando mal la cadena de insertar; intenta con:

    public void ingresar_horas(String horas){

    this.conectabd();
    try{
    String sqlstring = “INSERT INTO presupuesto(Horas_Anuales_Presupuestadas)VALUES(’”+horas+”’)”;
    stt.executeUpdate(sqlstring);
    stt.close();}
    catch(Exception e){
    System.out.println(e);
    }
    }

  13. Evelyn dijo:

    Hola Feliz Año Nuevo!! gracias ya me funciono esa parte, pero yo sigo con mis problemas en consultas a base de datos, en este caso necesito hacer una consulta y que los valores que me traiga dicha consulta se guarden en un arreglo, no me da error pero simplemente no logro hacerlo, soy nueva en esto de programar y no se si estoy haciendo algo mal…alli te va mi codigo:

    public int[] obtener_porcentaje_mensbd(){
    int porc_mens[]=new int[12];
    int i=0;
    this.conectabd();
    try{
    stt=con.createStatement();
    String sqlstring = “select * from cargabilidad_mensual”;
    rset=stt.executeQuery(sqlstring);

    while(rset.next()){
    porc_mens[i]= rset.getInt(”porcentaje”);
    i++;
    }
    JOptionPane.showMessageDialog(null, porc_mens, “le esta llegando”, JOptionPane.WARNING_MESSAGE);
    System.out.println(porc_mens[i]);
    rset.close();
    stt.close();

    }
    catch(Exception e){
    System.out.println(e);
    }
    return porc_mens;

    }

    en donde mando a imprimir el mensaje llegan unos caracteres extraños, espero puedas ayudarme ya que no veo donde me equivoco..gracias de antemano

  14. admin dijo:

    Hola Evelyn parece ser que tu estas imprimiendo un valor del arreglo que está fuera del índice, reemplaza la línea:
    System.out.println(porc_mens[i]);
    por lo siguiente:
    for(k=0;k<porc_mens.length;k++){
    System.out.println(porc_mens[k]);
    }

  15. melissa dijo:

    Hola tengo un problema
    Estoy haciendo una aplicaion en la que llamo informacion de una base de datos de sql de la siguiente forma
    public class tablaproductos extends AbstractTableModel{ /* Herencia de la clase table*/

    private int columna=4;
    private int rownum=10;

    private String[] Nombrecolumnas={
    “DESCRIPCION”,”PRECIO”, “ISV”,”EXISTENCIA”
    };
    private ArrayList ResultSets;

    public tablaproductos(java.sql.ResultSet rs) {
    ResultSets=new ArrayList();
    try{
    while(rs.next()){
    String[] row={
    rs.getString(”Description”),rs.getString(”Price”),rs.getString(”TaxID”),rs.getString(”Quantity”)
    };
    ResultSets.add(row);
    }
    }
    catch(Exception e){
    System.out.println(”Excepcion en la tabla”);
    }

    }
    este funciona pero al agregar un valor de tipo entero no me lo hace me manda una excepcion. si alguien puede ayudarme se lo agradeceria mucho.

  16. osvaldo dijo:

    Al parecer estas enviando un String al lo que usas getString(”Price”); tu resulset.add es posible que solo trabaje con String; necesitaria ver el codigo de tu resulset

  17. matsuita dijo:

    hola k tal estaba investigando esto de la conexion de acces y java y me preguntaba si con solo agregar el dns y el nombre de la base de datos y correr los prog de estan aky ya sale o me falta algo mas…………………………………………………………………………………………………..?

  18. pablo dijo:

    Debes crear una conexion ODBC a tu base de datos ACCESS, el nombre de tu ODBC debes ponerlo en la cadena de conexion, por ejemplo en este caso hemos llamado a la conexion ODBC objEjem, así: con = DriverManager.getConnection(”jdbc:odbc:odbcEjem”, “”, “”);……………………..

    Lo importante es que crees tu conexion ODBC, esto si lo estas usando desde WINDOWS. Para ello tienes que ir a Panel De Control -> Herramientas administrativas -> Origenes de Datos ODBC y agragar la conexion a tu Base de datos.

    Con esto ya te deberia funcionar.

  19. Что Вы думаете об автомобиле ВАЗ-2114?Стоит ли брать? dijo:

    http://auto-lubiteli.ru/chto-dumaete-avtomobile-vaz-2114-stoit-brat-t8-460.html…

Deje un comentario

Debe identificarse para enviar un comentario.