entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Buenas noches a todos.

La duda que tengo radica en la acción de insertar información en una tabla de una base de datos en Access usando Java, el código que tengo parece estar sintácticamente correcto, sin embargo, cuando consulto la información tras haber hecho la inserción, simplemente no está presente.

Primero, lo manejé de esta forma:

package Prototipo;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;

/**
 * @author Pedro Ramos Millán-Universidad Tecnológica de Tecámac
 */
public class InsertaMdb {
   public static void main(String[]ar){ 

   try{
       Connection conn=Controlador.Conexion.conectar("D:\\Proyecto HRAEZ\\SAEH1415.mdb");
       Statement esta=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);  
      String insertar="insert into medicos(clues,cedula,nombremed)values('MCSSA018774','CedulaMedico','Pedro')";
      int xx=esta.executeUpdate(insertar);      
      System.out.println(xx);     

   }catch(Exception er){
   er.printStackTrace();
   }

   } 
}

Y no realizó la inserción. Entonces usé la Interface PreparedStatement para intentar insertar, quedando mi código de la siguiente forma:

package Prototipo;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.Statement;
import java.sql.ResultSet;

/**
 * @author Pedro Ramos Millán-Universidad Tecnológica de Tecámac
 */
public class InsertaMdb {
   public static void main(String[]ar){ 

   try{
       Connection conn=Controlador.Conexion.conectar("D:\\Proyecto HRAEZ\\SAEH1415.mdb");       
      String insertar="insert into medicos(clues,cedula,nombremed)values(?,?,?)";
        PreparedStatement psta=conn.prepareStatement(insertar);
        psta.setString(1, "MCSSA018774");
        psta.setString(2, "CedulaMedico");
        psta.setString(3, "Pedro");

        int xx=psta.executeUpdate();

      System.out.println(xx);     

   }catch(Exception er){
   er.printStackTrace();
   }

   } 
}

Y nuevamente sin éxito.
¿Será que tengo más de un error lógico?
¿Acccess requiere algún .jar adicional, como es el caso con Mysql?

De antemano, muchas gracias por su atención.

2 Respuestas

2votos

cobasESP Puntos19430

Y el conn.commit(); y el conn.close(); a lo mejor hasta que no cierres y hagas commit con la base de datos, estos no se reflejan, porque aparentemente esta todo bien.

pWolfman_furry29 comentado Nov 16, 2015

Muchas gracias por tu respuesta. Es correcto, era necesario mandar llamar al método .commit() para poder insertar.

2votos

bl4z3r Puntos16360

Por lo que tengo entendido, en Java, para poder realizar una conexión, anteriormente necesitas cargar el controlador("driver") JDBC en memoria para poder trabajar tranquilamente con base de datos.

Esto se hace de la siguiente manera:

Class.forName("com.mysql.jdbc.Driver");
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/ammy","system","system");

Lo mismo sucede con MS Access.

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=" + "C:\\bank.accdb", "username", "password");

Para mas información, te recomendaría que revises tutoriales de conexiones de base de datos para MS Access.

pWolfman_furry29 comentado Nov 16, 2015

Gracias por la atención brindada a esta duda. Efectivamente, he realizado la conexión como lo indicas, a partir de una clase específica que recibe como parámetro el Path de la base de datos seleccionada a través de un jFileChooser.

package Controlador;
import java.sql.Connection;
import java.sql.DriverManager;

public class Conexion {

public  static Connection conectar(String xPath) {//Este método recibe el path
    try {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=" + xPath;//Y se recupera con la variable xPath
        Connection conn = DriverManager.getConnection(url, "username", "password");

        System.err.println("Conexión Exitosa :D"); 
        return conn;
    } catch (Exception e) {
        e.printStackTrace();
        return null;
}
}
}

Por favor, accede o regístrate para responder a esta pregunta.

¿Conoces alguien que puede responder?
¡Comparte esta pregunta!


Actividad Reciente

¿Eres Usuario Apple?

...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta