problema con consulta en java
Publicado por rodrigo (2 intervenciones) el 14/01/2019 21:12:12
Hola foro,
necesito ayuda con un código que estoy haciendo en java y mysql, la cual consiste en la lectura de un archivo txt la cual contiene encabezado y datos para insertar en una tabla en la base de datos. el problema surge cuando intenta cargar la fecha en una de las columnas de la tabla, la cual en el archivo viene con formato dd-mm-yy, pero en la tabla tiene como formato de fecha yy-mm-dd. estoy ocupando STR_to_date pero no me resulta. su ayuda por favor.
El error que obtengo es el siguiente
GRAVE: null
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''1', 'LIQU','505','19','0','14637','LQ20190110001.1',(STR_TO_DATE('20190110','%Y' at line 1
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.Util.getInstance(Util.java:386)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1053)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4120)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4052)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2503)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2664)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2788)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1816)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1730)
at cl.aft.gui.CargarDatos.cargaArchivo(CargarDatos.java:89)
at cl.aft.gui.CargarDatos.btnCargarDatosActionPerformed(CargarDatos.java:256)
at cl.aft.gui.CargarDatos.access$000(CargarDatos.java:27)
at cl.aft.gui.CargarDatos$1.actionPerformed(CargarDatos.java:156)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6533)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6298)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
at java.awt.Container.dispatchEventImpl(Container.java:2280)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
necesito ayuda con un código que estoy haciendo en java y mysql, la cual consiste en la lectura de un archivo txt la cual contiene encabezado y datos para insertar en una tabla en la base de datos. el problema surge cuando intenta cargar la fecha en una de las columnas de la tabla, la cual en el archivo viene con formato dd-mm-yy, pero en la tabla tiene como formato de fecha yy-mm-dd. estoy ocupando STR_to_date pero no me resulta. su ayuda por favor.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
public void cargaArchivo()
{
JFileChooser chooser = new JFileChooser();
chooser.showOpenDialog(null);
File f = chooser.getSelectedFile();
try
{
BufferedReader br = new BufferedReader (new FileReader(f));
String firstLine = br.readLine().trim();
String [] columsName = firstLine.split(";");
DefaultTableModel model = (DefaultTableModel)jtablaRepVentas.getModel();
model.setColumnIdentifiers(columsName);
Object[] tableLines = br.lines().toArray();
for(int i = 0; i < tableLines.length; i++)
{
String line = tableLines[i].toString().trim();
String[] dataRow = line.split(";");
model.addRow(dataRow);
}
Conectar conn = new Conectar();
conn.getConnection();
Statement s = null;
try {
s = conn.sentencia;
for(int i = 0; i < jtablaRepVentas.getRowCount(); i++)
{
String fecha_trx = jtablaRepVentas.getValueAt(i, 0).toString();
String entidad = jtablaRepVentas.getValueAt(i, 1).toString();
String estado = jtablaRepVentas.getValueAt(i, 2).toString();
String contrato = jtablaRepVentas.getValueAt(i, 3).toString();
String tipo_trx = jtablaRepVentas.getValueAt(i, 4).toString();
String monto_trx = jtablaRepVentas.getValueAt(i, 5).toString();
String cantidad = jtablaRepVentas.getValueAt(i, 6).toString();
String idliquidacion = jtablaRepVentas.getValueAt(i, 7).toString();
String fechaliqu = jtablaRepVentas.getValueAt(i, 8).toString();
String codigo_error = jtablaRepVentas.getValueAt(i, 9).toString();
String fecha_liquidacion = jtablaRepVentas.getValueAt(i, 10).toString();
String codigotipohora = jtablaRepVentas.getValueAt(i, 11).toString();
String ppt = jtablaRepVentas.getValueAt(i, 12).toString();
String sql ="INSERT INTO load_repventas_data (fecha_trx,ENTIDAD,ESTADO,CONTRATO,TIPO_TRX,MONTO_TRX,CANTIDAD,IDLIQUIDACION,FECHALIQU,CODIGO_ERROR,fecha_liquidacion,CODIGOTIPOHORA,PPT) VALUES (STR_TO_DATE('"+fecha_trx+"','%Y-%m-%d')), '" + entidad + "', '" + estado+"','"+ contrato+"','"+tipo_trx+"','"+ monto_trx+"','"+cantidad+"','"+idliquidacion+"',(STR_TO_DATE('"+fechaliqu+"','%Y-%m-%d')),'"+codigo_error+"', (STR_TO_DATE('"+fecha_liquidacion+"','%Y-%m-%d')),'"+codigotipohora+"','"+ppt+"'))";
s.executeUpdate(sql);
}
}
catch (SQLException ex) {
Logger.getLogger(CargarDatos.class.getName()).log(Level.SEVERE, null, ex);
}
}
catch (IOException ex)
{
ex.printStackTrace();
}
El error que obtengo es el siguiente
GRAVE: null
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''1', 'LIQU','505','19','0','14637','LQ20190110001.1',(STR_TO_DATE('20190110','%Y' at line 1
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.Util.getInstance(Util.java:386)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1053)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4120)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4052)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2503)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2664)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2788)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1816)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1730)
at cl.aft.gui.CargarDatos.cargaArchivo(CargarDatos.java:89)
at cl.aft.gui.CargarDatos.btnCargarDatosActionPerformed(CargarDatos.java:256)
at cl.aft.gui.CargarDatos.access$000(CargarDatos.java:27)
at cl.aft.gui.CargarDatos$1.actionPerformed(CargarDatos.java:156)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6533)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6298)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
at java.awt.Container.dispatchEventImpl(Container.java:2280)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Valora esta pregunta


0