Второй запрос SQL не вставляет никакого значения в базу данных - PullRequest
0 голосов
/ 05 марта 2012

Я пытаюсь вставить вопрос в таблицу вопросов, а затем получить последний вопрос id. Я пытаюсь добавить параметры для него в другую таблицу с именем select_op. Он вставляет вопрос успешно, но не варианты. Даже если я не получаю никаких исключений, метод успешно завершен.

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 ]

1 голос
/ 14 августа 2012

Как предложил Заки Вы пропустили коммит?

Я совершил .. Решил :) Спасибо

0 голосов
/ 05 марта 2012

getGeneratedKeys() может не поддерживаться в mysql (я никогда не видел, чтобы он использовался или пробовал).

Но я знаю, что это работает: выполнение запроса select mysql_insert_id() возвращает последнее значение автоинкремента - используйте его вместо getGeneratedKeys().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...