2012-03-19 3 views
0

Мне нужно обновить таблицу автоматически после успешной вставки другой таблицы. Я использую подготовленное заявление для этого, и попробовал пару способов сделать, но не работает. может кто-то, пожалуйста, помогите мне на этом. код дается следующееавтоматически обновляется после того, как вставка прошла успешно в java

  try 
       { 
        p=con.prepareStatement("insert into receipt values(?,?,?,?,?,?,?,?,?)"); 
        p.setInt(1, rn); 
        p.setDate(2, new java.sql.Date(rd.getTime())); 
        p.setInt(3, ag); 
        p.setInt(4, an); 
        p.setString(5, name); 
        p.setString(6, street); 
        p.setString(7, city); 
        p.setInt(8, pinno); 
        p.setInt(9, ar); 
        p=con.prepareStatement("update loan set t_os=t_os-? where accno=?"); 
        p.setInt(1, ar); 
        p.setInt(2, an); 
        p.executeUpdate(); 

        /*try 
        { 
         p=con.prepareStatement("update loan set t_os=t_os-? where accno=?"); 
         p.setInt(1, Integer.parseInt(art.getText())); 
         p.setInt(2, Integer.parseInt(ant.getText())); 
         p.executeUpdate(); 
        } 
        catch(Exception e) 
        { 
         e.printStackTrace(); 
        }*/ 

        status.setForeground(Color.BLUE); 
        status.setText("Successfully Added"); 
       } 
       catch (Exception e) 
       { 
        e.printStackTrace(); 
        status.setForeground(Color.RED); 
        status.setText("Enter proper values"); 
       } 

для меня это исполнение получить заклинивание после p.executeUpdate();

+0

Что вы имеете в виду застрял? Есть какая-то ошибка или что-то еще? – Danny

ответ

2

Вы не выполнить первый подготовленный оператор

p.setInt(9, ar); 
    //MISSING: p.executeUpdate(); 
    p=con.prepareStatement("update loan set t_os=t_os-? where accno=?"); 

Вы просто перезаписать и выполнить второй.

1

То, что вы разместили здесь, не будет работать, потому что вы повторно используете переменную p. Вы устанавливаете инструкцию для вставки, затем заменяете ее инструкцией для обновления, а затем выполняете ее. Вы никогда не выполняете инструкцию для вставки.

Чтобы исправить это, либо вызвать p.executeUpdate();, прежде чем делать p=con.prepareStatement("update loan set t_os=t_os-? where accno=?");, или (лучше), использовать различные переменные для двух операторов, и вызвать executeUpdate() на обоих.

0
you can first successfully execute the first query then you continue to the update... 
you can use 


    try{ 
    //work first execution 
    ///while true 
    try{ 

//update code 
    }finally{ 


    } 
    }finally{ 
//close resources 
    } 
+0

снова ваш вопрос непонятен ... есть таблица, связанная ?? – mykey

 Смежные вопросы

  • Нет связанных вопросов^_^