обновлять автоматически после успешной вставки в Java - PullRequest
0 голосов
/ 19 марта 2012

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

            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 ();

Ответы [ 4 ]

2 голосов
/ 19 марта 2012

Вы должны использовать транзакции для этого: http://docs.oracle.com/javase/tutorial/jdbc/basics/transactions.html

try {
 con.setAutoCommit(false);

 p=con.prepareStatement(....)
 ....
 p.executeUpdate();

 //Second statement
 p=con.prepareStatement(....)
 ....
 p.executeUpdate();

 con.commit();

 catch(..) {
  con.rollback();
 }
2 голосов
/ 19 марта 2012

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

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

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

1 голос
/ 19 марта 2012

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

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

0 голосов
/ 19 марта 2012
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
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...