Не могу вставить значения в таблицу через Visual Studio

0
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();

  • 0
    Возможно, что сообщение в исключении может быть полезным для определения причины возникновения исключения. Почему бы вам не отредактировать ваше сообщение и не включить эту информацию?
  • 0
    Не исключение не выбрасывается, вот в чем суть. Работает плавно, но ничего не вставляя.
Показать ещё 1 комментарий
Теги:
visual-studio

3 ответа

1
Лучший ответ

Вы зафиксировали изменения в БД?

  • 0
    Спасибо мужчина, это была действительно проблема. Принят ответ.
0

Согласно документам в Oracle, вы должны использовать executeQuery для запросов (которых это не так) и executeUpdate для вставок и обновлений (что это такое).

  • 0
    Это тоже правда. Было 2 проблемы с моим кодом. Я использовал executeQuery вместо правильного (executeUpdate) и не зафиксировал изменения. Спасибо за вашу помощь.
0

Наиболее вероятной причиной этого сценария является то, что у вас есть две базы данных.

Вы вставляете в один, но ищете вставленную запись в другой базе данных.

  • 0
    Если бы это было правдой, запуск его дважды мог взорвать, поскольку это нарушило бы ограничение первичного ключа, так как я бы вставил дважды уникальное значение. Но это не так, я могу запустить столько раз, сколько я хочу, и ничего не происходит.
  • 0
    Необязательно, большинство баз данных используют автоинкрементные целые числа в качестве своих первичных ключей.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню