Моя проблема в том, что я установил таблицу auto commit false. Мне нужно получить максимальный id из этой таблицы (в настоящее время вставленное значение auto increment id). Но я получаю идентификатор предыдущего совершенного процесса. Можно ли получить значениеМаксимальное значение из автоматической фиксации ложной таблицы
Моя реальная проблема: мне нужно вставить в таблицу некоторые значения, и нужно взять идентификатор последней вставленной записи из первой таблицы и вставить ее во вторую. Вторая вставка включает в себя некоторую загрузку изображения (как часть кода). поэтому он требует некоторой задержки или может иметь исключения. Мне нужно отменить все вставки (как в первом, так и вторые), если возникнут какие-либо исключения. Для этого я попытался использовать метод обратной привязки. Но он не работает должным образом, как я упоминал выше. Основная часть моего кода написано ниже
try
{
//getting connection and setting auto commit false
dbHandler dbGetConnect=new dbHandler();
Connection conRegPlot=null;
conRegPlot=dbGetConnect.getconn();
conRegPlot.setAutoCommit(false);
String qryInsertPlot="INSERT INTO property_table(name,message,owner,locality,lattitude,longitude,country,state,city,type,catagory,created,modified,creted_date,zoompoint,mob_no,title,img_path,expire_date,lease_term) VALUES('none','"+description+"','"+sessionUserId+"','"+locality+"','"+lattitude+"','"+longitude+"','"+country+"','"+state+"','"+city+"','"+type+"','"+catagory+"',NOW(),NOW(),CURDATE(),'"+zoom+"','"+mob_no+"','"+title+"','NOT IN USE',"+expireDate+",'"+termsAndConditions+"')";//insertion into the first table
Statement stCrs=conRegPlot.createStatement();
int resp=stCrs.executeUpdate(qryInsertPlot);
String qryGetMaxProperty="SELECT MAX(l_id)"+
" FROM property_table"+
" WHERE stat='active'"+
" AND CURDATE()<=expire_date";
propertyId1=dbInsertPropert.returnSingleValue(qryGetMaxProperty);// get the max id
String qryInsertImage="INSERT INTO image_table(plot_id,ownr_id,created_date,created,modified,stat,img_path) VALUES('"+propertyId1+"','"+sessionUserId+"',CURDATE(),NOW(),NOW(),'active','"+img_pth+"')";
Statement stImg=conRegPlot.createStatement();
stImg.executeUpdate(qryInsertImage);// inserting the image
conRegPlot.commit();
}
catch(Exception exc)
{
conRegPlot.rollback();
}
finally{
conRegPlot.close();
}
Этот сайт должен называться * SQL Injection *, а не * Переполнение стека *. Кто-нибудь избегает того, что они вкладывают в свои SQL-заявления? – tadman