Не сте разбрали връщаната стойност на PreparedStatement#execute()
.
Моля, прочетете внимателно javadoc:
Връща:
true
ако първият резултат еResultSet
обект;false
ако първият резултат е броене на актуализации или няма резултат.
По този начин връща — както се очаква напълно — false
на INSERT
запитване. Връща само true
на SELECT
заявка (за която обаче обикновено бихте искали да използвате executeQuery()
вместо това, което връща директно ResultSet
).
Ако се интересувате от засегнатите редове, по-скоро използвайте PreparedStatement#executeUpdate()
вместо. Връща int
според javadoc:
Връща:
или (1) броят на редовете за изрази SQL Data Manipulation Language (DML), или (2) 0 за SQL изрази, които не връщат нищо
След това върната стойност от 1 или по-голяма би означавала успешно вмъкване.
Несвързани към конкретния проблем:вашият код изтича DB ресурси. Моля, прочетете внимателно Колко често трябва да се затварят Connection, Statement и ResultSet в JDBC?