Этот вопрос является непрерывность этого:SQL: Vehicule добавляется в базу данных, но не его вариантов
У меня нет каких-либо исключений, брошенный больше. Данные добавляются в таблицу vehicule
, но не в таблицу vehicule_option
.
У вас есть идеи, почему?
public boolean create(Vehicule v){
String query = "INSERT INTO vehicule (MARQUE, MOTEUR, PRIX, NOM) VALUES (";
query += v.getMarque().getId() + ", "
+ v.getMoteur().getId() + ", "
+ v.getPrix() + ", \'"
+ v.getNom() + "\');";
try{
connect.setAutoCommit(false);
ResultSet nextID = connect.prepareStatement("CALL NEXT VALUE FOR seq_vehicule_id").executeQuery();
if (nextID.next()){
int ID = nextID.getInt(1);
v.setId(ID-1);
}
for (Option o : v.getOptions()){
System.out.println(v.getId() + " " + o.getId());
query += "INSERT INTO vehicule_option (id_vehicule, id_option) VALUES ("
+ v.getId() + ", " + o.getId() + ");";
}
Statement state = this.connect.createStatement();
ResultSet rs = state.executeQuery(query);
} catch (SQLException e){
e.printStackTrace();
}
return true;
}
Вот пример запроса я получаю с этим кодом:
INSERT INTO vehicule (MARQUE, MOTEUR, PRIX, NOM) VALUES (0, 0, 250.0, 'test');
INSERT INTO vehicule_option (id_vehicule, id_option) VALUES (34, 0);
INSERT INTO vehicule_option (id_vehicule, id_option) VALUES (34, 1);
INSERT INTO vehicule_option (id_vehicule, id_option) VALUES (34, 2);
INSERT INTO vehicule_option (id_vehicule, id_option) VALUES (34, 3);
INSERT INTO vehicule_option (id_vehicule, id_option) VALUES (34, 4);
Я не уверен в этом, но я не думаю, что вы можете выполнить кучу операторов, разделенных точкой с запятой, таким образом, как вы пытаетесь это сделать. Вы должны выполнять каждое заявление отдельно. –
Вы совершаете транзакцию? Вы устанавливаете 'setAutoCommit (false)', но я не вижу, чтобы вы вызывали 'commit()' – tddmonkey