Importar archivos CSV y XLS a SQL Server

Saludos a todos.
Actualmente estoy tratando de hacer una aplicación que permita seleccionar cualquier archivo con una estructura de columnas específica, con el formato mencionado y lo importe a una tabla de SQL Server. La aplicación lee correctamente los archivos, sin embargo no he podido conseguir que el contenido a partir de un UPDATE o un INSERT deposite los datos en una tabla con la misma estructura en SQL Server, cabe mencionar que no tengo experiencia programando, dado que soy recién egresado, y ya he agotado casi todas mis alternativas. Espero me puedan apoyar.

package exportadorv2;

import Clase.Excel;
import Clase.Insertar;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.sql.Connection;
import java.sql.PreparedStatement;
import static javax.management.Query.*;

import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.filechooser.FileNameExtensionFilter;
import jxl.Sheet;
import jxl.Workbook;

import java.awt.event.ActionEvent;
import java.awt.event.AWTEventListener;
import java.io.IOException;
import java.util.ArrayList;
import javax.swing.Timer;
import javax.swing.table.DefaultTableModel;

public class ImportarExcel extends javax.swing.JFrame {
String Nombre;
String ApellidoP;
String ApellidoM;
String Edad;
//-------------------------------------------------------------------------------------------------------------------------------------
private File archivoExcel;
// variable que encapsula el archivo seleccionado en el jFileChooser;
// esta declarada asi para poder usarla en todas las clases
//-------------------------------------------------------------------------------------------------------------------------------------

boolean bandera = true;

public ImportarExcel() {
initComponents();
}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

JFileChooser examinar = new JFileChooser();
examinar.setFileFilter(new FileNameExtensionFilter("Archivos Excel", "xls", "xlsx", "csv"));//Filtra el archivo seleccionado

//---------------------------------------------------------------------------------------------------------------------------
//Metodo para leer un archivo excel compatibilidad 97-2003
//---------------------------------------------------------------------------------------------------------------------------
int opcion = examinar.showOpenDialog(this);

archivoExcel = null;
if (opcion == JFileChooser.APPROVE_OPTION) {
archivoExcel = examinar.getSelectedFile().getAbsoluteFile();
JOptionPane.showMessageDialog(null, "Ruta\n" + archivoExcel);
jLabel1.setText(archivoExcel.getName());

try {
Workbook leerExcel = Workbook.getWorkbook(archivoExcel);
for (int hoja = 0; hoja < leerExcel.getNumberOfSheets(); hoja++) {
Sheet hojaP = leerExcel.getSheet(hoja);
int columnas = hojaP.getColumns();
int filas = hojaP.getRows();

String dato;

JOptionPane.showMessageDialog(rootPane, "No de Columnas " + columnas + "\nNo de Filas" + filas);
Object data[] = new Object[columnas];
for (int fila = 0; fila < filas; fila++) {
for (int columna = 0; columna < columnas; columna++) {
dato = hojaP.getCell(columna, fila).getContents();
System.out.print(dato+"");
int contador = 0;

switch(contador){
case 1:
Nombre =dato;
contador++;
break;

case 2:
ApellidoP = dato;
contador++;
break;

case 3:
ApellidoM = dato;
contador++;
break;

case 4:
Edad = dato;
contador = 1;
break;

}
}
}
}

} catch (Exception ioe) {

}

try{
System.out.print("\n");
Conexion con = new Conexion();
Connection cn = con.Conectar();

String sentencia = "UPDATE gtv_empleado set Nombre = '"+Nombre+"' where ApellidoP = '"+ApellidoP+"' and ApellidoM = '"+ApellidoM+"";
PreparedStatement pst = cn.prepareStatement(sentencia);
pst.executeUpdate();
con.CerrarConexion();
}
catch (Exception ioe){
ioe .printStackTrace();
}

}

//----------------------------------------------------------------------------------------------------------------------------
//Metodo que lee archivo de Excel (csv)
//----------------------------------------------------------------------------------------------------------------------------
try {

BufferedReader input = new BufferedReader(new FileReader(archivoExcel));
String linea;
String campo;

ArrayList columnas = new ArrayList();
while ((linea = input.readLine()) != null) {
ArrayList contenidoFila = new ArrayList();
int tamaño = linea.length();
int intAux = 0;
char arregloCadena[] = new char[tamaño];
arregloCadena = linea.toCharArray();

for (int i = 1; i < tamaño; i++) {
if (arregloCadena[i] == ',') {
campo = linea.substring(intAux, i);
intAux = i + 1;

if (bandera) {
columnas.add(campo);

} else {
contenidoFila.add(campo);
}
} else if (i == tamaño - 1) {
campo = linea.substring(intAux, i + 1);

if (bandera) {
columnas.add(campo);
for (int x = 1; x < columnas.size(); x++) {

}
} else {
contenidoFila.add(campo);

}
bandera = false;
}
int contador = 0;

switch(contador){
case 1:
Nombre =campo;
contador++;
break;

case 2:
ApellidoP = campo;
contador++;
break;

case 3:
ApellidoM = campo;
contador++;
break;

case 4:
Edad = campo;
contador = 1;
break;

}
}
}

input.close();
} catch (Exception ioe) {

}

try{
System.out.print("\n");
Conexion con = new Conexion();
Connection cn = con.Conectar();

String sentencia = "UPDATE gtv_empleado set Nombre = '"+Nombre+"' where ApellidoP = 'Lopez' and ApellidoM = 'Perez'";
PreparedStatement pst = cn.prepareStatement(sentencia);
pst.executeUpdate();
con.CerrarConexion();
}
catch (Exception ioe){
ioe .printStackTrace();
}

}
}

private void jFileChooser1ActionPerformed(java.awt.event.ActionEvent evt) {

}

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
dispose();

// TODO add your handling code here:
}

public static void main(String args[]) {

java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new ImportarExcel().setVisible(true);
}
});

}
public javax.swing.JButton jButton1;
// Variables declaration - do not modify
public javax.swing.JButton jButton2;
public javax.swing.JDialog jDialog1;
public javax.swing.JFileChooser jFileChooser1;
public javax.swing.JLabel jLabel1;
// End of variables declaration

}

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

NO CONCATENES

Nunca, NUNCA, NUNCA concatenes SQL de esa manera. Estás implementando un vector de ataque para inyección de SQL (busca acerca de SQL injection, creo que hasta he escrito al respecto en mi blog aquí mismo).

Y otra cosa es que no es necesario abrir y cerrar conexión en cada UPDATE. Lo puedes hacer, pero es completamente innecesario, y bastante ineficiente. Puedes ejecutar todos los UPDATES en la misma conexión.

Utiliza PreparedStatements:

 

Por último, hablas de hacer UPDATE o INSERT, pero no veo un solo INSERT en tu código. Y esos UPDATEs que estás haciendo, revisa bien la estructura de la tabla porque no estás usando la llave primaria para especificar qué registro actualizar. Si llegas a tener 10 registros en el excel o CSV con apellidos Pérez López, vas a actualizar 10 veces TODOS los registros de la tabla que tengan esos apellidos, y al final van a quedar TODOS esos registros con el nombre del último registro del archivo.

Me da la impresión de que no conoces acerca de bases de datos relacionales y SQL en general. Es importante que aprendas bien algo de eso además de Java, porque este código además de tener problemas de seguridad y ser ineficiente, tiene broncas hasta de diseño (tal vez hasta diseño de la base de datos).

Muchas Gracias

Le agradezco de antemano; todas sus observaciones son correctas, actualmente mi conocimiento es marcadamente escolar por la situación que mencionaba al inicio del post, por lo tanto he visto que no es funcional en momento y situación dada. Le agradezco la atención nuevamente, seguiré y estudiare su recomendación esperando el mejor resultado.

Hola!muchas gracias por la

Hola!muchas gracias por la respuesta ezamundio!yo también estoy empezando con MySQL , de hecho en la universidad estoy empezando con un curso llamado aplicaciones en la web y aplicaciones inalambricas. Por ahora, solo he usado mysql cuando he hecho bases de datos con operaciones transaccionales en mi base de datos como insert, update y delete. hosteados con un server en pero aun soy muy inexperta, a ver qué tal el curso, le tengo un poco de respeto la verdad. Yo a Gerardo te aconsejaría para empezar una base teorica, hay muchos cursos online prueba en Udemy o Coursera y combinarlo con ejercicios prácticos para entenderlo todo bien.

Un saludo y mucha suerte