validar si existe un registro

Iniciado por ancestro, 26 Enero 2015, 21:51 PM

0 Miembros y 1 Visitante están viendo este tema.

ancestro

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 (java) [Seleccionar]
public void AgregarAsociacion(int idpedido, int idticket, double total) {


String sql= "UPDATE ticket SET id_pedido=? and ticket=? where total=?";
try{
PreparedStatement ps= null;
ps= super.prepareStatement(sql);
ps. setInt(1, idticket);
ps.setInt(2, idpedido);
ps.setInt(3, (int) total);
ps.executeUpdate();
}catch(Exception e){
logger.error("error", e);
logger.error("Query"+ sql);
}



}

Shell Root

#1
Java? Algun error?
Código (c#) [Seleccionar]
public void AgregarAsociacion(int idpedido, int idticket, double total) {
   String sql = "UPDATE ticket SET id_pedido=? and ticket=? where total=?";
   try{
      PreparedStatement ps = null;
      ps = super.prepareStatement(sql);
      ps.setInt(1, idticket);
      ps.setInt(2, idpedido);
      ps.setInt(3, (int)total);
      ps.executeUpdate();
   }catch(Exception e){
      logger.error("error", e);
      logger.error("Query"+ sql);
   }
}
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

ancestro

#2
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 :/

madara1412

#3
para validad si existe un registro en la tabla 1 yo lo aria haci
Código (java) [Seleccionar]

public void consulta()
{
int Conteo=0;
try{Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
con = DriverManager.getConnection(connectionUrl);
stmt = con.createStatement();
String sql ="select Count(id_pedido)as conteo from tabla1 where id_pedido=?";
            rs= stmt.executeQuery(sql);
           while(rs.next)
          {
            Conteo=rs.getInt("conteo");
          }
}catch (SQLException ex)
{

}
if(Conteo==0)
{
// no hay registros
}
if(Conteo>0)
{
// hay registros
}
}


ancestro

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");
      }
   }
-----------------------

Usuario Invitado

Aplicando el patrón DAO, representamos las tablas como clases:

Código (java) [Seleccionar]
public class Ticket {
private int id;
private Request request;
private double total;

public Ticket() {

}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Request getRequest() {
return request;
}
public void setRequest(Request request) {
this.request = request;
}
public double getTotal() {
return total;
}
public void setTotal(double total) {
this.total = total;
}
}


Código (java) [Seleccionar]
public class Request {
private int id;
private int state;

public Request() {

}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getState() {
return state;
}
public void setState(int state) {
this.state = state;
}
}


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

Código (java) [Seleccionar]
public Request find(String id) {
String sql = "SELECT * FROM pedidos WHERE id_pedido = ?";

PreparedStatement preparedStatement=  null;
Connection connection = null;
ResultSet result = null;
Request request = null;
try {
connection = DBHelper.getConnection();
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1,id);
result = preparedStatement.executeQuery();

if(result.next()) {
request = new Request();
while(result.next()) {
request.setId(result.getString("request_id"));
request.setState(result.getInt("state"));
}
}
} catch (SQLException | NullPointerException e) {
logger.error("Ha ocurrido un error: "+e.getLocalizedMessage());
} finally {
if(connection != null)
connection.close();
if(preparedStatement != null)
preparedStatement.close();
if(result != null)
result.close();
}
return request;
}


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

Código (java) [Seleccionar]
public boolean insertTicket(Ticket ticket) {
String SQL = "INSERT INTO tickets(ticket_id, pedido_id, total)
VALUES(?,?,?)";
PreparedStatement preparedStatement=  null;
Connection connection = null;
boolean operationState = false;
try {
connection = DBHelper.getConnection();
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setInt(1,ticket.getId());
preparedStatement.setInt(2,ticket.getRequest().getId());
preparedStatement.setDouble(3,total);
operationState = preparedStatement.executeUpdate();

} catch (SQLException | NullPointerException e) {
logger.error("Ha ocurrido un error: "+e.getLocalizedMessage());
} finally {
if(connection != null)
connection.close();
if(preparedStatement != null)
preparedStatement.close();
}
return operationState;
}


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 (java) [Seleccionar]
Request request = find(REQUEST_ID);
if(request != null) {
Ticket ticket = new Ticket();
ticket.setId(1);
ticket.setRequest(request);
ticket.setTotal(2000);
insertTicket(ticket);// o utilizar el boolean devuelto para algo...
}
else {
// mostrarle al usuario que el pedido no existe
}


Te recomiendo que uses el framework ORM Hibernate. Lee al respecto.
"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein