estou fazendo um aplicativo desktop em Java no eclipse que faz cadastro e CRUD em um banco de dados PostgreSQL de cadastro de usuários
cadastro de clientes e cadastro de ordem de serviço.
na tela ordem de serviço, tenho um pequeno painel que puxa da tabela de clientes referente aquela ordem de serviço.
quando a ordem de serviço é pesquisada.
nessa tabela o cliente é pesquisado através do int idcli(coluna da tabela no PostgreSQL) que é puxado do txtCliId(* Id) no pequeno painel
preenchido pelos dados da tabela de ordem de serviço.
A ordem de serviço é acessada normalmente mas na hora de fazer a segunda requisição sql para os dados do cliente através
do método pesquisar_cliente_os() . que é chamada dentro do método pesquisar_os()
private void pesquisar_cliente_os() {
Connection conexao = appconn.connect();
String sql = "select idcli as Id, nomecli as Nome, fonecli as Fone, email from tbclientes where idcli ?";
try {
pst = conexao.prepareStatement(sql);
pst.setInt(1,Integer.parseInt(txtCliId.getText()));
rs=pst.executeQuery();
tblClientesOs.setModel(DbUtils.resultSetToTableModel(rs));
tamColunas();
} catch (Exception e) {
// JOptionPane.showMessageDialog(null, e);
e.printStackTrace();
}
}
dá um erro bizarro:
org.postgresql.util.PSQLException: ERROR: syntax error at or near "$1"
Posição: 89
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2575)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2297)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:335)
at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:481)
at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:401)
at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:164)
at org.postgresql.jdbc.PgPreparedStatement.executeQuery(PgPreparedStatement.java:114)
at Telas.TelaEx.pesquisar_cliente_os(TelaEx.java:108)
at Telas.TelaEx.pesquisar_os(TelaEx.java:67)
at Telas.TelaEx$3.actionPerformed(TelaEx.java:194)
at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972)
at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2313)
at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279)
at java.desktop/java.awt.Component.processMouseEvent(Component.java:6617)
at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3342)
at java.desktop/java.awt.Component.processEvent(Component.java:6382)
at java.desktop/java.awt.Container.processEvent(Container.java:2264)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4993)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2322)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4825)
at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4934)
at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4563)
at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4504)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2308)
at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2773)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4825)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
na linha
pst.setInt(1,Integer.parseInt(txtCliId.getText()));
parece que está o erro não sei, mas já tentei algumas variações como separar o txtCliId transformar o conteúdo em int depois
colocar no pst.setInt(…), tentei também trocar o parseInt para valueOf mesmo erro.
pesquisei o erro : syntax error at or near “$1” ,
mas parece que pode ser várias coisas não entendi as explicações.
a tabela onde deveria vir as informações do cliente fica sem aparecer nada.
Se alguém puder ajudar.