2014-02-01 2 views
1

я столкнулся с трудностями при вставке «last_insert_id» в моем подготовленном statement.I получили как выбрать LAST_INSERT_ID в подготовленном заявлении, как показано ниже:Как вставить last_insert_id с помощью prepareStatement?

PreparedStatement getLastInsertId = con.prepareStatement("SELECT LAST_INSERT_ID()"); 

Когда я использую ту же самую процедуру для вставки last_insert_id в моем PreparedStatement, как это :

1. PreparedStatement pst = con.prepareStatement("insert into introducer_table values(?,?,?,?)"); 
2.  
3.  //introducer details into database 
4.  pst.setString(1,LAST_INSERT_ID()); 
5.  pst.setString(2, nameofintroducer); 
6.  pst.setString(3, accountno); 
7.  pst.setString(4, signofintroducer); 

Im получение «нулевой» значение в первом column.can любому помочь мне выйти из этой проблемы

+0

Что LAST_INSERT_ID() возвращение – Kick

+0

на самом деле у меня была одна таблица новый_пользователь она состоит из двух полей SID , имя – balasrilakshmi

+0

, когда я вставляю sid, имя в таблице newuser, это значение sid должно быть вставлено в столбец sid моего файла presentationcer_table. И этот sid можно получить, используя last_insert_id() @ nikas tyagi. – balasrilakshmi

ответ

1

Если вы делаете одновременно действия по сохранению, используйте getGeneratedKeys(), это в значительной степени java.

Я не SQL гуру, но здесь я нашел способ, чтобы получить сгенерированный идентификатор, используя метод getGeneratedKeys()

long generatedId= 0L; 
    statement = con 
      .getConnection() 
      .prepareStatement(
        "insert into new_user set name= ? , contact= ? , ....", 
        statement.RETURN_GENERATED_KEYS); 
    statement.setString(1, "examplename"); 
    statement.setString(2, "examplecontact"); 
    ------ 
    statement.executeUpdate(); 
    ResultSet generatedKeys = statement.getGeneratedKeys(); 
    if (generatedKeys.next()) { 
     generatedId = generatedKeys.getLong(1);// here is your generated Id , use it to insert in your introducer_table 
    } 

    PreparedStatement pst = con.prepareStatement("insert into introducer_table values(?,?,?,?)"); 

     //introducer details into database 
     pst.setString(1, generatedId); 
     pst.setString(2, nameofintroducer); 
     pst.setString(3, accountno); 
     pst.setString(4, signofintroducer); 
+0

@suresh, но в соответствии с вашим запросом вы вставляете данные в таблицу newuser, генерируя какой-то идентификатор, и этот идентификатор должен использоваться в интродукционной таблице? Правильно ли это? – balasrilakshmi

+0

Да точно .. Вы можете использовать его далее в запросе вставки 'inncer_table'. Это то, что вы хотите? –

+0

ya right, но как я могу добавить это в мою интродукцию_table? – balasrilakshmi

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