bool BDados::registar(string nome, string email, string gabinete, string sigla, string pass) {
stringstream query;
query << "INSERT INTO Docente VALUES (" << 7 << ",'" << nome << "','" << email << "','" << codigo << "','" << sigla << "','" << pass << "')";
try{
instrucao = ligacao->createStatement(query.str());
ResultSet* re = instrucao->executeQuery();
cout << "Registo efectuado com sucesso." << endl;
return true;
}catch (SQLException erro) {
cout << erro.getMessage();
return false;
}
}
Поэтому я использую этот код для вставки строк в таблицу Docente. Но это ничего не значит. Странная часть заключается в том, что SQLException не бросается так теоретически, что это должно работать правильно или я ничего не пропустил?
EDIT: Проблема в том, что я думал, что executeUpdate автоматически совершается, но, видимо, этого не происходит. Решение заключалось в том, чтобы добавить
ligacao->commit();
и заменить этот ResultSet* re = instrucao->executeQuery();
с этим int a = instrucao->executeUpdate();
Вы зафиксировали изменения в БД?
Согласно документам в Oracle, вы должны использовать executeQuery для запросов (которых это не так) и executeUpdate для вставок и обновлений (что это такое).
Наиболее вероятной причиной этого сценария является то, что у вас есть две базы данных.
Вы вставляете в один, но ищете вставленную запись в другой базе данных.