Galera, to fazendo um programinha aqui muito simples para gerenciar uma bilbioteca. E quando vou emprestar um livro ele tem que fazer uma verificação. Ao digitar o código do livro que o usuário quer emprestar ele precisa ir no banco e verificar o campo DISPONIBILIDADE do Livro. Se no campo estiver ‘Disponível’ ele da um update e altera o campo para ‘Indisponível’. E se estiver ‘Indisponível’, ou seja, se o Livro estiver emprestado ele precisa enviar uma mensagem avisando que o livro não está disponível e não pode ser locado. E é exatamente aí que eu estou com dúvida.
Não estou conseguindo fazer esta verificação. Já tentei de tudo! Se vcs puderem me ajudar eu ficaria muito grato. Esse software é meu TCC do meu Curso Técnico e preciso apresentá-lo na segunda-feira. Se alguém puder me ajudar eu ficaria muito agradecido!
Abaixo tem alguns metodos e as classes em que cada um estão.
Obs.: Estou conseguindo fazer o UPDATE de Disponivel para Indisponivel, mas antes preciso fazer essa verificação.
Classe Emprestimos
public void verifica() throws SQLException {
Livros livros = new Livros();
AddBD add = new AddBD();
String sql = "select disponibilidade from cadastro_livros where codigo_livro = " + Integer.parseInt(txtCodigoLivro.getText());
add.verificaDisponibilidade(sql);
}[/code]
[b]Classe AddBD[/b]
[code]
public void verificaDisponibilidade(String sql) throws SQLException {
Livros l1 = new Livros();
PreparedStatement stmt = conexao.prepareStatement(sql);
stmt.setString(1, l1.getDisponibilidade());
if(l1.getDisponibilidade().equals("Disponível")){
Emprestimos emp = new Emprestimos();
emp.empresta();
}
else {
JOptionPane.showMessageDialog(null, "O livro ja está emprestado");
}
stmt.setString(1, l1.getDisponibilidade());
stmt.execute();
stmt.close();
}
[/code]
[b]Classe Emprestimos[/b]
[code] public void empresta() throws SQLException {
String sql = "update cadastro_livros set disponibilidade = 'Indisponível' where codigo_livro = " + Integer.parseInt(txtCodigoLivro.getText());
Livros livros = new Livros();
AddBD add = new AddBD();
livros.setCodigo(Integer.parseInt(txtCodigoLivro.getText()));
add.emprestarLivros(livros, sql);
}
Classe AddBD
[code]
public void emprestarLivros(String sql) throws SQLException {
PreparedStatement stmt = conexao.prepareStatement(sql);
Livros livros = new Livros();
livros.setDisponibilidade(sql);
stmt.execute();
stmt.close();
}[/code]
Eu dei uma olhada no seu código, tá meio confuso, vou tentar te dar uma idéia de como fazer.
Vc tem que dar o select no banco e retorna um tipo livro com todos os atributos, vc retornando esse tipo livro vc dá um get na disponibilidade dele, se for disponível, vc atualiza o objeto com o set na parte da disponibilidade, dá o update na tabela e empresta o livro, caso esteja indisponível, só não dar o update na tabela e mostrar a mensagem em algum lugar.
Uma dica: Pq vc não usa um tipo booleano pra isso? Vi que vc tá usando String.
Desculpe minha ignorância mas como ficaria isso? :oops:
Eu tenho um pronto aqui de um projeto que eu to fazendo, to fazendo o seguinte
[code]public Computador retornaComputador(int patrimonio1) throws ClassNotFoundException, SQLException{
Connection c = conexao.conectaBanco();
PreparedStatement pst = c.prepareStatement(“Select * from Computador where patrimonio = ?”);
pst.setInt(1, patrimonio1);
ResultSet rs = pst.executeQuery();
Computador computador = null;
if(rs.next()){
int patrimonio = rs.getInt("patrimonio");
String departamento = rs.getString("departamento");
int ramal = rs.getInt("ramal");
String responsavel = rs.getString("responsavel");
String tipo = rs.getString("tipo");
int status = rs.getInt("status");
computador = new Computador(patrimonio, departamento, ramal, responsavel, tipo, status);
}
return computador;
}
[/code]
Retornando o computador eu sei se ele está disponivel ou não, caso o status seja sim, atualizo o status dele com o setStatus(); e vou no método atualizaComputador, caso contrário só não chamar o método atualizaComputador. No seu caso vc adapta pra Livro. 
public void atualizaComputador(Computador computador){
//Dá todos os updates do computador
....
Valeu amigo! Vou ver se consigo fazer funcionar aqui.
Abraço!
Será que vc poderia mostrar sua classe “atualizaComputador()” ?
public void verificaDisponibilidade(String sql) throws SQLException {
Livros l1 = new Livros();
PreparedStatement stmt = conexao.prepareStatement(sql);
stmt.setString(1, l1.getDisponibilidade());
if(l1.getDisponibilidade().equals("Disponível")){
Emprestimos emp = new Emprestimos();
emp.empresta();
}
else {
JOptionPane.showMessageDialog(null, "O livro ja está emprestado");
}
stmt.setString(1, l1.getDisponibilidade());
stmt.execute();
stmt.close();
}
Cara você passa a Query mas não a executa nunca… você tá querendo o quê ??? dá uma olhada no código do amigo depois da linha ResultSet rs = stmt.executeQuery();
Mas e esse stmt.execute(); não é pra executar?
public void atualizaComputador(Computador computador) throws ClassNotFoundException, SQLException{
Connection c = gc.conectaBanco();
PreparedStatement stmt = c.prepareStatement(" UPDATE Computador SET status = ? WHERE patrimonio = ?");
stmt.setInt(1, computador.getStatus());
stmt.setInt(2, computador.getPatrimonio());
stmt.execute();
}
Minha classe Computador.Java
package Modelo;
public class Computador {
private int patrimonio;
private String departamento;
private int ramal;
private String responsavel;
private String tipo;
private int status; // 0 - fora, 1 - serviço, 2 - saida
public Computador(){
}
public Computador(int patrimonio, String departamento, int ramal,
String responsavel, String tipo, int status) {
super();
this.patrimonio = patrimonio;
this.departamento = departamento;
this.ramal = ramal;
this.responsavel = responsavel;
this.tipo = tipo;
this.status = status;
}
public int getPatrimonio() {
return patrimonio;
}
public void setPatrimonio(int patrimonio) {
this.patrimonio = patrimonio;
}
public String getDepartamento() {
return departamento;
}
public void setDepartamento(String departamento) {
this.departamento = departamento;
}
public int getRamal() {
return ramal;
}
public void setRamal(int ramal) {
this.ramal = ramal;
}
public String getResponsavel() {
return responsavel;
}
public void setResponsavel(String responsavel) {
this.responsavel = responsavel;
}
public String getTipo() {
return tipo;
}
public void setTipo(String tipo) {
this.tipo = tipo;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
}
Deu certo aqui galera! Valeu a ajuda.
