2012-03-05 61 views
0

我試圖在問題表中插入問題,並得到最新的問題id。我試圖在其他名爲select_op的表中添加選項。它成功插入問題,但不包含選項。即使我沒有得到任何異常,方法成功退出。第二個SQL查詢沒有在數據庫中插入任何值

int id=addQuestions(ques, survey_id); 

if(id>0){ 
    //not inserting anyvalue in database 
    String sql = "insert into select_op("+ "first,"+ "second,"+ "third,"+ "four,"+ "question_id)"+" values(?,?,?,?,?)";  

    try { 
     conn.setAutoCommit(false); 
     PreparedStatement pst = conn.prepareStatement(sql); 
     pst.setString(1,option1); 
     pst.setString(2,option2); 
     pst.setString(3,option3); 
     pst.setString(4,option4); 
     pst.setInt(5,id); 
     pst.addBatch(); 
     System.out.println(pst.executeBatch()); 
    }catch (BatchUpdateException e) { 
     try { 
      System.out.println(e); 
      conn.rollback(); 
     } catch (Exception e2) { 
      e.printStackTrace(); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

//this function insert data successfully 
public int addQuestions(String ques,String survey_id){ 

    String sql = "insert into question(question,survey_id) values(?,?)";   
    int id = 0; 
    try { 
     conn.setAutoCommit(false); 
     PreparedStatement pstmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); 
     pstmt.setString(1,ques); 
     pstmt.setString(2,survey_id); 
     pstmt.addBatch();   
     pstmt.executeBatch(); 
     ResultSet keys = pstmt.getGeneratedKeys(); 
     keys.next(); 
     id = keys.getInt(1); 
     keys.close(); 
     conn.commit(); 
     pstmt.close(); 
    } 
    catch (BatchUpdateException e) { 
     try { 
      conn.rollback(); 
     } catch (Exception e2) { 
      e.printStackTrace(); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return id; 
} 

什麼建議嗎?

+2

你錯過了一個提交? – Zaki 2012-03-05 13:29:18

+0

@Zaki ..謝謝解決:) – 2012-03-05 13:33:04

回答

1

由於Zaki建議 你錯過了一個提交?

我確實承諾..解決:) 謝謝

0

getGeneratedKeys()可能不支持在MySQL中(我從來沒有見過它使用或嘗試過)。

但我知道這個工作原理:執行查詢select mysql_insert_id()返回最後一個自動增量值 - 使用該值代替getGeneratedKeys()