Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Problema con conexion jdbc

Estas en el tema de Problema con conexion jdbc en el foro de Java en Foros del Web. Buenas Gente! Soy nuevo en el foro, verán, tengo un pequeño problema con un código que debería conectarse a un archivo excel, al comienzo me ...
  #1 (permalink)  
Antiguo 21/11/2013, 12:10
Avatar de korpiklaani  
Fecha de Ingreso: noviembre-2013
Mensajes: 7
Antigüedad: 10 años, 5 meses
Puntos: 0
Pregunta Problema con conexion jdbc

Buenas Gente! Soy nuevo en el foro, verán, tengo un pequeño problema con un código que debería conectarse a un archivo excel, al comienzo me funcionaba perfecto pero ahora no me realiza la conexión (o al menos no me obtiene los datos que necesito).
El código en cuestión es el siguiente:


Cita:
package prgAcademico;

// Primero importamos las librerías necesarias
// import java.sql.* importa todas las librerías relacionadas con sql
import java.sql.*;
// import
import javax.swing.filechooser.FileNameExtensionFilter;
import java.io.*;
import javax.swing.JFileChooser;
import javax.swing.table.DefaultTableModel;


public class Main extends javax.swing.JFrame {

public Main() {
initComponents();
//Posionamos en el centro
this.setLocationRelativeTo(null);
//iniciamos maximizado
this.setExtendedState(MAXIMIZED_BOTH);
//ocultamos el JtextField para hacer más bonita la interfaz (?)
this.jruta.setVisible(false);

}


private void jrutaActionPerformed(java.awt.event.ActionEvent evt) {
}

private void jAbrirActionPerformed(java.awt.event.ActionEvent evt) {
//Creamos un filtro para que sólo se puedan seleccionar archivos excel
FileNameExtensionFilter filter = new FileNameExtensionFilter("Archivos Excel","xls","xlsx");

//Se crea el JFileChooser, sirve para abrir una ventana que nos permite seleccionar el archivo
JFileChooser fileChooser = new JFileChooser();

//Se añade el filtro
fileChooser.setFileFilter(filter);

//Se especifica el título de la ventana
fileChooser.setDialogTitle("Abrir archivo..");

//Se crea el file, donde se pone la carpeta que abrirá primero
File ruta = new File("C:/Academico/planillas");

//Coloca la ruta donde se abrira el filechooser
fileChooser.setCurrentDirectory(ruta);

//Se establece la apertura de la ventana Abrir
int result = fileChooser.showOpenDialog(null);

//Condicionante para obtener la ruta del archivo seleccionado
if (result == JFileChooser.APPROVE_OPTION){
File file = fileChooser.getSelectedFile();
jruta.setText(String.valueOf(file));

try {
//definir el driver
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String URL = "jdbc:odbc:DRIVER={Microsoft Excel Driver (*.xls)};DBQ=";
//obtener ruta
String sourcename = jruta.getText();
// Establecemos la variable que contiene el driver y la ruta
URL = URL + sourcename + ";READONLY=TRUE;DriverID=790";
System.out.println(URL);
//conectamos
Connection conexion = DriverManager.getConnection(URL);
//obtenemos metadatos
DatabaseMetaData md = conexion.getMetaData();
//consultar nombre de tablas
ResultSet rs = md.getTables(null, null, "%", null);

while (rs.next()){
String val = rs.getString(3);
String tbl = val.replace("'", "");
tbl = tbl.replace("$", "");
jcursos.addItem(tbl);
jcursos.setEnabled(true);
btnConsultar.setEnabled(true);

}

}

catch (ClassNotFoundException | SQLException e){
}

}
}

private void btnConsultarActionPerformed(java.awt.event.ActionE vent evt) {
//Este código conecta el archivo excel como base de datos
try {
//Para establecer el modelo al JTable
DefaultTableModel notas = new DefaultTableModel();
this.jtQuery.setModel(notas);
//primero definimos el driver que conectará el arhivco excel
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String dbURL = "jdbc:odbc:DRIVER={Microsoft Excel Driver (*.xls)};DriverID=790;Dbq=";
//Obtenemos la ruta del archivo através del jruta.
String dataSourceName = jruta.getText();
//Establecemos el código de comunicación entre el driver y la ruta
dbURL = dbURL + dataSourceName + ";READONLY=TRUE";
//realizamos la conexion
Connection con = DriverManager.getConnection(dbURL,"","");

Statement st = con.createStatement();
Object e = jcursos.getSelectedItem();
String apoyo = String.valueOf(e);
apoyo = "Administracion 2011";
ResultSet rs = st.executeQuery("select * from ['" + apoyo + "$']");

System.out.println(dbURL);

ResultSetMetaData rsMd = rs.getMetaData();
int columnas = rsMd.getColumnCount();

for (int i=1; i<= columnas; i++){
notas.addColumn(rsMd.getColumnLabel(i));

}

while (rs.next()){
Object[] fila = new Object[columnas];
for (int i=0; i < columnas; i++) {
fila[i] = rs.getObject(i+1);
}
notas.addRow(fila);
}

jtQuery.getColumnModel().getColumn(1).setPreferred Width(250);
jlabelb.setEnabled(true);
cboBuscar.setEnabled(true);
txtBusqueda.setEnabled(true);
for (int i=2; i<= columnas; i++){
jtQuery.getColumnModel().getColumn(i).setPreferred Width(200);
}
}
//Este código nos lanza un error en caso de encontrar excepciones
catch (ClassNotFoundException | SQLException e) {
}
}



}
He puesto todo lo que yo he escrito, por si las dudas..
Trabajo con NetBeans IDE 7.4
Sólo soy un novato espero me puedan decir.
  #2 (permalink)  
Antiguo 21/11/2013, 13:02
Avatar de korpiklaani  
Fecha de Ingreso: noviembre-2013
Mensajes: 7
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Problema con conexion jdbc

Bueno Gente! creo que lo he solucionado! El error yacía en que yo trataba de abrir un xlsx, qué, por la razón de haber sido creado en Excel 2007 lo cargaba, pero luego lo modifiqué en un 2010 y me tiraba un error de "Formato inesperado". tras volver a editar el archivo en el 2007 se me ha solucionado el inconveniente.. Gracias (Aunque no me hayáis respondido :S)

Etiquetas: conexion, html, jdbc, netbeans, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:15.