Olá,
Após o click no botão "Salvar" estou tentando listar o registro inserido no BD MySQL em um JTable. Como descrito no código abaixo,
no listener do botão "Salvar" o método abaixo (contido na classe Propriedade) é invocado recebendo como argumentos: o objeto (objPropriedade) a ser inserido e o JTable (table);
public void salvar(Propriedade objPropriedade, JTable table) throws SQLException{
Conexao con = new Conexao();
Statement stmt = con.getConnection().createStatement();
String consulta = "INSERT INTO propriedade VALUES("+0+",'"+ objPropriedade.nome_prop+"'"+",'"+objPropriedade.municipio+"',"+
objPropriedade.area+");";
stmt.execute(consulta);
TableToJTable objTJT = new TableToJTable(stmt);
objTJT.insertField ("propriedade", table);
}
Após a inclusão do registro o método "insertField" é chamado, recebendo o nome da tabela(tabela) e o JTable(table):
package func;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import java.sql.Statement;
import java.sql.ResultSetMetaData;
public class TableToJTable {
private Statement stmt;
public TableToJTable(Statement stmt){
this.stmt = stmt;
};
public void listTable(String tabela, JTable jtable){
DefaultTableModel modelo = (DefaultTableModel) jtable.getModel();
ResultSet rs;
ResultSetMetaData rsmd = null;
try {
rs = stmt.executeQuery("SELECT * FROM " + tabela);
rsmd = rs.getMetaData();
String [] tableColumnsName = new String [rsmd.getColumnCount()];
for (int i=1;i<=rsmd.getColumnCount();i++){
tableColumnsName[i-1] = new String(rsmd.getColumnName(i));
}
modelo.setColumnIdentifiers(tableColumnsName);
int colNums = rsmd.getColumnCount();
while(rs.next()){
Object[] objects = new Object[colNums];
for(int i=0;i<colNums;i++){
objects[i] = rs.getObject(i+1);
}
modelo.addRow(objects);
}
jtable.setModel(modelo);
} catch (SQLException ex) {
javax.swing.JOptionPane.showMessageDialog(null,"Erro
inesperado!","Atenção!",javax.swing.JOptionPane.ERROR_MESSAGE);
}
}
public void insertField(String tabela, JTable table){
DefaultTableModel modelo = (DefaultTableModel) table.getModel();
ResultSet rst = null;
ResultSetMetaData rsmd = null;
String coluna;
try {
rst = stmt.executeQuery("SELECT * FROM" + tabela);
rsmd = rst.getMetaData();
coluna = rsmd.getColumnName(1);
rst = stmt.executeQuery("SELECT * FROM" + tabela + "WHERE" + rsmd.getColumnName(1) +
"= (SELECT MAX(" + rsmd.getColumnName(1) +") FROM " + tabela +");");
} catch (SQLException ex) {
javax.swing.JOptionPane.showMessageDialog(null,"Erro
inesperado!","Atenção!",javax.swing.JOptionPane.ERROR_MESSAGE);
ex.printStackTrace();
}
}
}
Este método deveria selecionar o último registro da tabela (Propriedade) e listá-lo no JTable, porém o seguinte erro é gerado:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROMpropriedade' at line 1
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
at com.mysql.jdbc.Util.getInstance(Util.java:381)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1030)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3515)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3447)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1951)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2101)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2548)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2477)
at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1422)
at func.TableToJTable.insertField(TableToJTable.java:60)
at sysfarm.Propriedade.salvar(Propriedade.java:38)
at sysfarm.CadastroPropriedades.btnSalvarActionPerformed(CadastroPropriedades.java:231)
at sysfarm.CadastroPropriedades.access$100(CadastroPropriedades.java:25)
at sysfarm.CadastroPropriedades$2.actionPerformed(CadastroPropriedades.java:90)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6216)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5981)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4583)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4413)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4556)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4220)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4150)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2475)
at java.awt.Component.dispatchEvent(Component.java:4413)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Espero que alguém me ajude…Obrigado
>