2013-12-24 2 views
1

Я новичок в JDBC и пробовал следующий код. Не удалось найти в ней ошибку:Подготовленный отчет не входит

try{  
     Connection con = ConnectionProvider.getCon(); 
     stmt=con.prepareStatement("insert into create_request values((select count(reqno) from create_request)+1,?,?,?,?,?)"); 
     stmt.setString(1,obj_Leaverequest.getUser_name()); 
     stmt.setString(2,obj_Leaverequest.getLeave_Type()); 
     stmt.setInt(3,obj_Leaverequest.getLeave_Units()); 
     stmt.setString(4,obj_Leaverequest.getLeave_Reason()); 
     stmt.setString(5,"pending"); 
     count=stmt.executeUpdate(); 
     if(count>0){ 
      status=true; 
     } 
    } 

Update: Если я заменю свой код, как это работает:

String sqQuery="insert into create_request values (?,?,?,?,?,?)"; 
     stmt=con.prepareStatement(sqQuery); 
     stmt.setString(1,"(select count(reqno) from create_request)+1"); 
     stmt.setString(2,obj_Leaverequest.getUser_name()); 
     stmt.setString(3,obj_Leaverequest.getLeave_Type()); 
     stmt.setInt(4,obj_Leaverequest.getLeave_Units()); 
     stmt.setString(5,obj_Leaverequest.getLeave_Reason()); 
     stmt.setString(6,"pending"); 

Геттеры работают отлично, я могу напечатать их значения. Наверное, я ошибаюсь в запросе. Пожалуйста, укажите мою ошибку. Заранее спасибо!!

+0

Вам необходимо зафиксировать соединение или использовать транзакцию. –

+0

@SureshkumarPanneerselvan Не мог получить u. Может ли ты мне позвонить мне ненадолго? Должен ли я заключить инструкцию insert? –

+0

Поместите 'con.commit();' after' executeUpdate(); '. Смотрите это: http://docs.oracle.com/javase/7/docs/api/java/sql/Connection.html#commit%28%29 – krokodilko

ответ

1
String sqQuery="insert into create_request values (?,?,?,?,?,?)"; 
     stmt=con.prepareStatement(sqQuery); 
     stmt.setString(1,"(select count(reqno) from create_request)+1"); 
     stmt.setString(2,obj_Leaverequest.getUser_name()); 
     stmt.setString(3,obj_Leaverequest.getLeave_Type()); 
     stmt.setInt(4,obj_Leaverequest.getLeave_Units()); 
     stmt.setString(5,obj_Leaverequest.getLeave_Reason()); 
     stmt.setString(6,"pending"); 

Проверьте «?» индекс подготовленных операторов. У вас есть 6, но вам нужно только 5

Надеюсь, что это поможет

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