Foro de elhacker.net

Programación => Java => Mensaje iniciado por: ancestro en 26 Enero 2015, 21:51 pm



Título: validar si existe un registro
Publicado por: ancestro en 26 Enero 2015, 21:51 pm
hola buen dia, soy un novato en esto de java, recurro a este foro por que tengo un proyecto en java en donde ocupo validar si existe un registro en la tabla1(id_pedido), y si existe insertarlo en tabla2(id_ticket, id_pedido, total) y si existe avisar al usuario que no existe quisiera saber como seria la extructura de la sintaxis alguna critica constructiva por aqui? gracias.


Código
  1. public void AgregarAsociacion(int idpedido, int idticket, double total) {
  2.  
  3.  
  4. String sql= "UPDATE ticket SET id_pedido=? and ticket=? where total=?";
  5. try{
  6. ps= super.prepareStatement(sql);
  7. ps. setInt(1, idticket);
  8. ps.setInt(2, idpedido);
  9. ps.setInt(3, (int) total);
  10. ps.executeUpdate();
  11. }catch(Exception e){
  12. logger.error("error", e);
  13. logger.error("Query"+ sql);
  14. }
  15.  
  16.  
  17.  
  18. }


Título: Re: validar si existe un registro
Publicado por: Shell Root en 26 Enero 2015, 22:01 pm
Java? Algun error?
Código
  1. public void AgregarAsociacion(int idpedido, int idticket, double total) {
  2.   String sql = "UPDATE ticket SET id_pedido=? and ticket=? where total=?";
  3.   try{
  4.      PreparedStatement ps = null;
  5.      ps = super.prepareStatement(sql);
  6.      ps.setInt(1, idticket);
  7.      ps.setInt(2, idpedido);
  8.      ps.setInt(3, (int)total);
  9.      ps.executeUpdate();
  10.   }catch(Exception e){
  11.      logger.error("error", e);
  12.      logger.error("Query"+ sql);
  13.   }
  14. }


Título: Re: validar si existe un registro
Publicado por: ancestro en 27 Enero 2015, 18:19 pm
si fijate que estoy  tratando de hacer un metodo que verifique que exista  el id_pedido en tabla1 , cuando valide  hacer un update o insert a tabla2 con los campos (id_ticket, id_pedido, total) pero no se como implementarlo ayuda :/


Título: Re: validar si existe un registro
Publicado por: madara1412 en 27 Enero 2015, 19:50 pm
para validad si existe un registro en la tabla 1 yo lo aria haci
Código
  1. public void consulta()
  2. {
  3. int Conteo=0;
  4. try{Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
  5. con = DriverManager.getConnection(connectionUrl);
  6. stmt = con.createStatement();
  7. String sql ="select Count(id_pedido)as conteo from tabla1 where id_pedido=?";
  8.             rs= stmt.executeQuery(sql);
  9.            while(rs.next)
  10.           {
  11.             Conteo=rs.getInt("conteo");
  12.           }
  13. }catch (SQLException ex)
  14. {
  15.  
  16. }
  17. if(Conteo==0)
  18. {
  19. // no hay registros
  20. }
  21. if(Conteo>0)
  22. {
  23. // hay registros
  24. }
  25. }
  26.  
  27.  


Título: Re: validar si existe un registro
Publicado por: ancestro en 27 Enero 2015, 23:02 pm
no hace  nada :(

tengo 2 tablas  tabla1(id_pedido,id_cliente,id_em,descripcion) y tabla2(id_ticket,id_pedido,id_cliente)

la idea aqui es("ASOCIAR ") id_pedido de taba1  con el id_pedido de tabla2

lo estoy intentando por clases tengo 1 clase en donde contiene los metodos SET y GET de id_pedido, id_ticket y total
 y tengo 1 clase en donde se pongo los metodos

es por eso que ocupo validar la exitencia del "id_pedido" en tabla1 para luego poder hacer el update o insert en la tabla2 (id_ticket, id_pedido, total


-------------------------
   public void  AsociarR(Asocacion AsoPrueba) {
      int Conteo=0;
      try{
         String sql="select Count(id_pedido)AS Conteo FROM pedido_movil where id_pedido=? ";
         super.execQuery(sql);
         
         while(super.next()){
            Conteo=super.getColInt(AsoPrueba.getIdpedido());
         }
      }catch(SQLException ex){
      }
      if(Conteo==0){
         //no hay
         JOptionPane.showMessageDialog(null, "este registro no existe");
      }
      if(Conteo>0){
         // hay registros
         
     String sql= "update ticket set id_pedido=? and ticket=? where total=";
         try{
            PreparedStatement ps= null;
            ps= super.prepareStatement(sql);
            ps.setInt(1, AsoPrueba.getIdpedido());
            ps.setInt(2, AsoPrueba.getIdticket());
            ps.setInt(3, (int) AsoPrueba.getTotal());
            ps.executeUpdate();
         }catch(SQLException ex){
            logger.error("error", ex);
            logger.error("Query"+ sql);
         }
         JOptionPane.showMessageDialog(null, "REGISTRO ASOCIADO");
      }
   }
-----------------------


Título: Re: validar si existe un registro
Publicado por: Usuario Invitado en 28 Enero 2015, 01:46 am
Aplicando el patrón DAO, representamos las tablas como clases:

Código
  1. public class Ticket {
  2. private int id;
  3. private Request request;
  4. private double total;
  5.  
  6. public Ticket() {
  7.  
  8. }
  9. public int getId() {
  10. return id;
  11. }
  12. public void setId(int id) {
  13. this.id = id;
  14. }
  15. public Request getRequest() {
  16. return request;
  17. }
  18. public void setRequest(Request request) {
  19. this.request = request;
  20. }
  21. public double getTotal() {
  22. return total;
  23. }
  24. public void setTotal(double total) {
  25. this.total = total;
  26. }
  27. }

Código
  1. public class Request {
  2. private int id;
  3. private int state;
  4.  
  5. public Request() {
  6.  
  7. }
  8. public int getId() {
  9. return id;
  10. }
  11. public void setId(int id) {
  12. this.id = id;
  13. }
  14. public int getState() {
  15. return state;
  16. }
  17. public void setState(int state) {
  18. this.state = state;
  19. }
  20. }

Creamos un método en el DAO de Request (pedido) que busque un pedido por ID:

Código
  1. public Request find(String id) {
  2. String sql = "SELECT * FROM pedidos WHERE id_pedido = ?";
  3.  
  4. PreparedStatement preparedStatement=  null;
  5. Connection connection = null;
  6. ResultSet result = null;
  7. Request request = null;
  8. try {
  9. connection = DBHelper.getConnection();
  10. preparedStatement = connection.prepareStatement(sql);
  11. preparedStatement.setString(1,id);
  12. result = preparedStatement.executeQuery();
  13.  
  14. if(result.next()) {
  15. request = new Request();
  16. while(result.next()) {
  17. request.setId(result.getString("request_id"));
  18. request.setState(result.getInt("state"));
  19. }
  20. }
  21. logger.error("Ha ocurrido un error: "+e.getLocalizedMessage());
  22. } finally {
  23. if(connection != null)
  24. connection.close();
  25. if(preparedStatement != null)
  26. preparedStatement.close();
  27. if(result != null)
  28. result.close();
  29. }
  30. return request;
  31. }

Creamos un método que inserte un Ticket con un Request especificado:

Código
  1. public boolean insertTicket(Ticket ticket) {
  2. String SQL = "INSERT INTO tickets(ticket_id, pedido_id, total)
  3. VALUES(?,?,?)";
  4. PreparedStatement preparedStatement=  null;
  5. Connection connection = null;
  6. boolean operationState = false;
  7. try {
  8. connection = DBHelper.getConnection();
  9. preparedStatement = connection.prepareStatement(sql);
  10. preparedStatement.setInt(1,ticket.getId());
  11. preparedStatement.setInt(2,ticket.getRequest().getId());
  12. preparedStatement.setDouble(3,total);
  13. operationState = preparedStatement.executeUpdate();
  14.  
  15. logger.error("Ha ocurrido un error: "+e.getLocalizedMessage());
  16. } finally {
  17. if(connection != null)
  18. connection.close();
  19. if(preparedStatement != null)
  20. preparedStatement.close();
  21. }
  22. return operationState;
  23. }

Así o mantenemos simple y ordenado. Primero buscamos el pedido por ID. Si éste existe, creamos un nuevo objeto Ticket le asignamos un ID, un total y le asociamos un pedido (Request). Luego lo insertamos en la BD:

Código
  1. Request request = find(REQUEST_ID);
  2. if(request != null) {
  3. Ticket ticket = new Ticket();
  4. ticket.setId(1);
  5. ticket.setRequest(request);
  6. ticket.setTotal(2000);
  7. insertTicket(ticket);// o utilizar el boolean devuelto para algo...
  8. }
  9. else {
  10. // mostrarle al usuario que el pedido no existe
  11. }

Te recomiendo que uses el framework ORM Hibernate. Lee al respecto.