1
I’m having trouble trying to get something on the table, I’m new so I did it the way I know.
Button code:
livros.setPesquisarLivro(txtLivro.getText());
try {
modelo.setNumRows(0);
for (ObjetoLivro c : livroDAO.pesquisarLivro(livros)) {
modelo.addRow(new Object[]{
c.getNomeLivro(),
c.getAutor(),
c.getGenero()});
c.getAlunoLivro();
}
} catch (Exception e) {
}
Research code:
public ArrayList<ObjetoLivro> pesquisarLivro(ObjetoLivro pesquisar) throws SQLException {
ResultSet rs = ConnectionFactory.getStatement().executeQuery("SELECT IDLIVRO,NOMELIVRO,AUTOR,GENERO,NOMEALUNO FROM LIVRO WHERE NOMELIVRO LIKE '%"+pesquisar+"%'");
ArrayList<ObjetoLivro> livros = new ArrayList<ObjetoLivro>();
while (rs.next()) {
ObjetoLivro livros2 = new ObjetoLivro();
livros2.setIdLivro(rs.getInt(1));
livros2.setNomeLivro(rs.getString(2));
livros2.setAutor(rs.getString(3));
livros2.setGenero(rs.getString(4));
livros2.setAlunoLivro(rs.getString(5));
livros.add(livros2);
}
return livros;
}
Code of ConnectionFactory
:
package util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
public class ConnectionFactory {
private static Connection connection = null;
private static Statement statement;
static {
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/biblioteca",
"root", "");
statement = connection.createStatement();
} catch (Exception ex) {
Logger.getLogger(ConnectionFactory.class.getName()).log(Level.SEVERE, null, ex);
}
}
public static Statement getStatement() {
return statement;
}
}
Code of ObjetoLivro
:
package Model;
public class ObjetoLivro {
private String nomeLivro,autor,genero,alunoLivro,pesquisarLivro;
private int idLivro;
public String getPesquisarLivro() {
return pesquisarLivro;
}
public void setPesquisarLivro(String pesquisarLivro) {
this.pesquisarLivro = pesquisarLivro;
}
public String getNomeLivro() {
return nomeLivro;
}
public void setNomeLivro(String nomeLivro) {
this.nomeLivro = nomeLivro;
}
public String getAutor() {
return autor;
}
public void setAutor(String autor) {
this.autor = autor;
}
public String getGenero() {
return genero;
}
public void setGenero(String genero) {
this.genero = genero;
}
public int getIdLivro() {
return idLivro;
}
public void setIdLivro(int idLivro) {
this.idLivro = idLivro;
}
public String getAlunoLivro() {
return alunoLivro;
}
public void setAlunoLivro(String alunoLivro) {
this.alunoLivro = alunoLivro;
}
}
The return of the search code is:
[]
And my table shows nothing, after clicking the search button.
What is
modelo.setNumRows(0);
? Why do you calllivroDAO.pesquisarLivro(livros);
twice?– Victor Stafusa
Are you searching directly at the bank ne? You need to enter all fields of the object in the query, because java has no way of knowing which fields this object has and which is related to the table columns.
– user28595
Show the code of the classes
ConnectionFactory
andObjetoLivro
.– Victor Stafusa
The.setNumRows(0) model, serves to start the table in column 0, because my table was manually configured.
– Marcos Kropp
The problem is just what I had commented, you are sending an objectolivro to the query, but java does not know what to search, you must inform which object field you want to search in the query.
– user28595
Correct query:
"SELECT IDLIVRO,NOMELIVRO,AUTOR,GENERO,NOMEALUNO FROM LIVRO WHERE NOMELIVRO LIKE '%"+ pesquisar.getNomeLivro() +"%'"
– user28595
Read this: injection of SQL
– Victor Stafusa
Ah, it’s not just because you’ll put the results in a
JTable
that your doubt is aboutJTable
or depends on knowledge intrinsic toJTable
. In fact, your question is about the JDBC and you have no problem with yourJTable
in the scope of that question. So I took (again) the [jtable] tag and added the [jdbc tag].– Victor Stafusa