Estou fazendo para testar.
No banco de dados tenho uma tabela com duas colunas, pk_id_produto e pro_nome na tbl_teste.
Tenho um código em uma classe java exclusiva para SQL:
public Connection conectar(){
try {
//Driver do PostgreSQL
Class.forName(“com.mysql.jdbc.Driver”).newInstance();
//local do banco, nome do banco, usuario e senha
String url = "jdbc:mysql://" + servidor + "/" + nomeDoBanco;
this.setCon((Connection) DriverManager.getConnection(url, usuario, senha));
//se ocorrer tudo bem, ou seja, se conectar a linha a segui é executada
this.status = true;
}
catch(ClassNotFoundException | InstantiationException | IllegalAccessException | SQLException e){
JOptionPane.showMessageDialog(null, e.getMessage());
}
return this.getCon();
}
/**
* Executa consultas SQL
* @param pSQL
* @return int
*/
public boolean executarSQL(String pSQL){
try {
//createStatement de con para criar o Statement
this.setStatement(getCon().createStatement());
// Definido o Statement, executamos a query no banco de dados
this.setResultSet(getStatement().executeQuery(pSQL));
} catch (SQLException ex) {
ex.printStackTrace();
return false;
}
return true;
}
public boolean executarUpdateDeleteSQL(String pSQL){
try {
//createStatement de con para criar o Statement
this.setStatement(getCon().createStatement());
// Definido o Statement, executamos a query no banco de dados
getStatement().executeUpdate(pSQL);
} catch (SQLException ex) {
ex.printStackTrace();
return false;
}
return true;
}
/**
* Executa insert SQL
* @param pSQL
* @return boolean
*/
public int insertSQL(String pSQL){
int status = 0;
try {
//createStatement de con para criar o Statement
this.setStatement(getCon().createStatement());
// Definido o Statement, executamos a query no banco de dados
this.getStatement().executeUpdate(pSQL);
//consulta o ultimo id inserido
this.setResultSet(this.getStatement().executeQuery("SELECT last_insert_id();"));
//recupera o ultimo id inserido
while(this.resultSet.next()){
status = this.resultSet.getInt(1);
}
//retorna o ultimo id inserido
return status;
} catch (SQLException ex) {
ex.printStackTrace();
return status;
}
}
/**
* encerra a conexão corrente
* @return boolean
*/
public boolean fecharConexao(){
try {
if((this.getResultSet() != null) && (this.statement != null)){
this.getResultSet().close();
this.statement.close();
}
this.getCon().close();
return true;
} catch(SQLException e) {
JOptionPane.showMessageDialog(null, e.getMessage());
}
return false;
No primeiro código que coloquei tem o retornarListaProdutoController, ele chama o retornarListaProdutoDao que é o seguinte:
public ArrayList retornarListaProdutoDao() {
ArrayList listaModelProduto = new ArrayList < > ();
ModelProduto modelProduto = new ModelProduto();
try {
this.conectar();
this.executarSQL(“SELECT pk_id_produto + pro_nome FROM tbl_teste”);
while (this.getResultSet().next()) {
modelProduto = new ModelProduto();
modelProduto.setIdProduto(this.getResultSet().getInt(1));
modelProduto.setProNome(this.getResultSet().getString(2));
listaModelProduto.add(modelProduto);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
this.fecharConexao();
} return listaModelProduto;
}
E no DAO acima do retornarLista tenho o retornar produto para fornecer os dados:
public ModelProduto retornarProdutoDao(int pIdProduto) {
ModelProduto modelProduto = new ModelProduto();
try {
this.conectar();
this.executarSQL(“SELECT pk_id_produto + pro_nome FROM tbl_teste WHERE pk_id_produto = '” + pIdProduto + “’”);
while (this.getResultSet().next()) {
modelProduto.setIdProduto(this.getResultSet().getInt(1));
modelProduto.setProNome(this.getResultSet().getString(2));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
this.fecharConexao();
}
return modelProduto;
}