bom gente, bom dia a todos, me bateu um dia desses mais um dúvida newb que vou compartilhar aqui com vocês.
Estou fazendo umas classes para acessar e manipular o banco de dados. nestas, estou usando o PreparedStatement para substituir os caracteres coringas da minha query, e executar a mesma. Ou seja, estou usando o PreparedStatement para inserir algumas coisas no Banco de dados.
Entretanto, eu preciso agora recuperar algumas informações do meu Banco de dados. E eu pensei em fazer da seguinte forma:
public static List<Livro> procurarLivro( String nome )
{
List<Livro> livro = null;
try
{
String sql = "SELECT * FROM livro WHERE nome = ?";
Conexao conexao = new Conexao("jdbc:mysql://localhost:3306/mydb",
"com.mysql.jdbc.Driver","root","alunolab");//classe que obtem a conexão
Connection con = conexao.obterConexao();
PreparedStatement comando = con.prepareStatement(sql);
comando.setString(1, nome);
ResultSet resultSet = comando.executeQuery(sql);
livro = new ArrayList<Livro>();
/*recupera os dados no banco de dados,
e os inserem em uma lista, que depois vai ser
retornada quando o método terminar de ser
executado*/
while(resultSet.next())
{
//insere na lista
livro.add(new Livro(resultSet.getInt("isbn"),
resultSet.getString("nome"),
resultSet.getString("autor"),
resultSet.getString("editora"),
resultSet.getString("tarja")));
}
Pois bem, será que chamando dentro de resultSet (linha 17) executeQuery da classe PreparedStatement é valido? Pois quando tive aula de conexão com o banco de dados, meu professor fez de um jeito um pouquinho diferente, pelo menos em relação a obtenção dos dados, invés de PreparedStatement ele usou Statement.
Além disso, qual é a diferença de PreparedStatement e Statement? Também nas linhas 13 e 17 qual seria a diferença se eles não tivessem argumentos?
