Оператор вставки JDBC не работает - PullRequest
5 голосов
/ 21 октября 2010

Я пытаюсь вставить новую запись, используя jdbc. Все выглядит хорошо, у меня нет никаких исключений, но новая запись не вставлена ​​в таблицу. Выбор заявления работает правильно.

  public Connection getConnection(){
    Connection conn=null;
    try {
        Class.forName("org.postgresql.Driver");
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }

    try {
        conn = DriverManager.getConnection(url);
        conn.setAutoCommit(true);

    } catch (SQLException e) {
        e.printStackTrace();  
    }
    return conn;
}

public void insertDish(String name, float mass, float price, String description,int pizzeria_id) {
        String insertStr = "insert into \"Dish\"(name,mass,price,description,pizzeria_id) values("+"'"+name+"'"+", "+mass+", "+price+", "+"'"+description+"'"+", "+pizzeria_id+")";

      Connection conn = getConnection();

    try {
        Statement sql = conn.createStatement();
        sql.executeUpdate(insertStr);
        sql.close();
        conn.close();
    } catch (SQLException e) {
        e.printStackTrace();  
    }
}

Что может быть не так?

Ответы [ 2 ]

8 голосов
/ 22 октября 2010

У меня была похожая ситуация, когда моя программа запросов к БД не видела вставки / обновления, сделанные из моей Java-программы, потому что они не были зафиксированы и, следовательно, не были видны другим соединениям.

Попробуйте выполнить явную фиксацию сразу после выполнения инструкции:

sql.executeUpdate(insertStr);
conn.commit(); // ADDED
sql.close();

Если это сработает, вы можете изменить настройки AutoCommit или просто придерживаться явной фиксации.

1 голос
/ 21 октября 2010

Я бы попробовал отключить автоматическую фиксацию и выполнить транзакцию вручную, посмотрите, поможет ли это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...