вставка даты и времени в базу данных с помощью java

Я хочу вставить дату и время в базу данных MySql, используя Java и подготовленный оператор:

Calendar cal = Calendar.getInstance();
PreparedStatement stmnt = db.PreparedStatement("INSERT INTO Run " +
                       "(Time) VALUE (?) ");
    stmnt.setDate(1, new java.sql.Date(cal.getTime()));
    stmnt.executeQuery();  

ПРИМЕЧАНИЕ. В настоящее время существует ошибка - здесь не удается найти символ (java.sql.Date) в строке 4.

db — это экземпляр своего рода класса-оболочки, который предоставляет то, что мне нужно от java.sql, — здесь он просто получает подготовленный оператор из моего объекта подключения.

Время (столбец) - это дата и время в моей базе данных, и я вижу только метод setDate и setTime, но я хочу сохранить оба - мой код все равно не работает ;-)

Если бы кто-нибудь мог дать мне несколько советов по вставке комбинированной даты и времени (текущее время было бы большим подспорьем, поскольку это моя первая цель) в базу данных MySql с использованием подготовленного оператора, я был бы очень благодарен.

Спасибо


person Community    schedule 05.06.2010    source источник


Ответы (2)


Конструктор для java.sql.Date занимает много времени (миллисекунды с 1970 года) java.sql.Date Чтобы получить миллисекунды из java.uitl.Calendar, вы используете cal.getTimeInMillis()

Ваш код будет:

Calendar cal = Calendar.getInstance();
PreparedStatement stmnt = db.PreparedStatement("INSERT INTO Run " + "(Time) VALUE (?) ");
stmnt.setDate(1, new java.sql.Date(cal.getTimeInMillis()));
stmnt.executeQuery();
person Goibniu    schedule 05.06.2010
comment
Превосходно! вот в чем проблема, странно, что ошибка казалась настолько несвязанной. Большое спасибо за Вашу помощь. - person ; 05.06.2010

следующий код должен позволить вам вставить дату с точностью до миллисекунды. Я без проблем использовал его с HSQLDB, Sybase, SQL-Server и MySql.

java.util.Date date = getMyDate();
if (date == null) {
    statement.setNull(insertionIndex, Types.TIMESTAMP);
} else {
    statement.setTimestamp(insertionIndex, new Timestamp (date.getTime()));
}
person Chris    schedule 05.06.2010