1
I have a question when creating a method that checks if there is already a record in my database.
In my database I have two tables:
Table User: (id, login, password); Order table: (id, Qtd, status,id_user);
I would like to check the status in the Requests table, and the User table has a relationship with the Requests table.
My idea is to check the status of an order whenever a particular user tries to place a new order, if you have an open order the order will not be added to the database.
Below is my method check:
public int verificaStatus(String status, Usuario u) {
int id = 0;
Connection conn = null;
ResultSet resultSet = null;
PreparedStatement stmt = null;
conn = getConnection();
try {
stmt = conn
.prepareStatement("SELECT pedidos.status=?, pedidos.id_usuario=?" +
"FROM pedidos" +
"INNER JOIN usuario ON pedidos.id_usuario = usuario.id" +
"WHERE pedidos.id_usuario = '" + u.getId() + "' ");
stmt.setString(1, status);
resultSet = stmt.executeQuery();
if (resultSet.next()) {
id = resultSet.getInt("id_usuario");
}
} catch (SQLException e) {
} finally {
closeConnection(conn, (Statement) stmt, resultSet);
}
System.out.println("ID do Usuário: " + id);
System.out.println("ID do u.getId(): " + u.getId());
return id;
}
Follow my "insert method":
public int inserir(Pedidos pedidos) {
Connection conn = null;
conn = getConnection();
int sucesso = 0;
Usuario u = new Usuario();
int pedidosRealizados = verificaStatus(pedidos.getStatus()); //Nesse linha possui um erro, passei apenas o "status" como parâmetro, no método verifica é passado como parâmetro duas vaiáveis.
if (pedidosRealizados == 0) {
PreparedStatement stmt = null;
try {
stmt = conn.prepareStatement("INSERT INTO "
+ "pedidos (loja, status, comentario, quantidade, id_usuario) VALUES(?,?,?,?,?)");
stmt.setString(1, pedidos.getLoja());
stmt.setString(2, pedidos.getStatus());
stmt.setString(3, pedidos.getComentario());
stmt.setInt(4, pedidos.getQuantidade());
stmt.setInt(5, pedidos.getId_usuario());
sucesso = stmt.executeUpdate();
if (sucesso > 0) {
System.out.println("PEDIDO REALIZADO COM SUCESSO!");
System.out.println("Pedidos realizados: " + pedidosRealizados);
System.out.println("Status: " + pedidos.getStatus());
}
} catch (SQLException e) {
System.out.println("ERRO AO REALIZAR O PEDIDO!");
} finally {
closeConnection(conn, (Statement) stmt);
}
} else {
System.out.println("ERRO: EXISTE UM PEDIDO EM ABERTO");
closeConnection(conn);
}
return sucesso;
}
Do you want to check how? Passing a status as parameter? You can only have one order at a time in the bank?
– DiegoAugusto