Как вставить java.util.Date в базу данных? - PullRequest
3 голосов
/ 04 июня 2011

Я хочу вставить дату в базу данных, но не работает ни одно сообщение об ошибке, которое появляется. Когда я смотрю на свою таблицу в БД Oracle, я не могу найти свои данные, которые я вставил.

java.util.Date daterecep;
// getter and setter
public void setdaterecep( java.util.Date daterecep) {
         this.daterecep=daterecep;
} 
public  java.util.Date getdaterecep() {
       return  daterecep;
}

и

    nt val=0;
    try {
        val = st.executeUpdate("insert into tabdate (date) values('"+daterecep+"')" );
    } catch (SQLException ex) {
         Logger.getLogger(Insertdate.class.getName()).log(Level.SEVERE, null, ex);
    }

    System.out.println(val);
    return resultat;
}

Я использовал PreparedStatement, но он не работал, я просто попытался выполнить код Java

val = st.executeUpdate("insert into tabdate(date) values('12/12/2004')");

и добавьте

public static void main (String args[]) throws SQLException {

    Insertdate B= new Insertdate();
    B.connexionBD();
    B.insert();//function for the insertion
}

и это работает.

1 Ответ

15 голосов
/ 04 июня 2011

Здесь

values('"+daterecep+"')

вы в основном пытаетесь сохранить результат daterecep.toString() в базе данных. В соответствии с документацией он имеет формат, подобный «Sat Jun 6 10:43:00 BOT 2011» (который зависит от локали и часового пояса!). База данных этого не понимает.

Вы должны использовать PreparedStatement#setTimestamp() для установки поля DATETIME / TIMESTAMP в БД.

preparedStatement = connection.prepareStatement("insert into tabdate (date) values(?)" );
preparedStatement.setTimestamp(1, new Timestamp(daterecep.getTime()));
preparedStatement.executeUpdate();

Или когда это действительно поле DATE, используйте вместо него setDate().

preparedStatement.setDate(1, new java.sql.Date(daterecep.getTime()));

В качестве бонуса PreparedStatement также спасает вас от SQL-инъекций .

Смотри также:

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