Ввод значения даты в Postgresql с Java - PullRequest
3 голосов
/ 05 октября 2011

Я пытаюсь запрограммировать приложение базы данных с помощью Java и PostgreSQL. У меня есть несколько строк с типом данных даты. Но я не могу добавить какие-либо записи в базу данных с этим кодом:

Date aDate = null;
aDate.setYear(1990);
aDate.setDate(01);
aDate.setMonth(05);

preparedStatement prep = connection.prepareStatement("insert 
into exampletable values (?,?);");
prep.setDate(1, (java.sql.Date) aDate);
prep.setDate(2, (java.sql.Date) aDate);

Как я могу добавить дату в строку postgreSQL с запросами в java?

1 Ответ

6 голосов
/ 05 октября 2011

Не ясно, является ли это вашей единственной проблемой, но этот код почти наверняка не тот, который вы хотите:

Date aDate = null;
aDate.setYear(1990);
aDate.setDate(01);
aDate.setMonth(05);
  • Он выдаст NullPointerException, потому что вы пытаетесь разыменовать null
  • Затем вы пытаетесь установить год на 3890AD (java.util.Date на основе 1900 года)
  • Затем вы устанавливаете месяц на июнь. Если вы думали, что устанавливаете месяц на май, подумайте еще раз - Date основывается на 0 для месяцев
  • Все методы, которые вы используете, устарели - это должно поднять большую сигнальную лампочку для вас
  • Затем вы пытаетесь разыграть aDate на java.sql.Date, но нет никаких признаков того, что равно a java.sql.Date

Я бы предложил:

  • Либо используйте Joda Time в качестве гораздо лучшего API даты / времени, либо java.util.Calendar
  • Убедитесь, что вы на самом деле создаете экземпляр, прежде чем устанавливать значения
  • Вероятно, создайте новый java.sql.Date позже.

Например:

Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, 1990);
calendar.set(Calendar.DAY_OF_MONTH, 1);
calendar.set(Calendar.MONTH, 4); // Assuming you wanted May 1st

java.sql.Date date = new java.sql.Date(calendar.getTime().getTime());

// Ideally specify the columns here as well...
PreparedStatement prep = connection.prepareStatement(
    "insert into exampletable values (?,?)");
prep.setDate(1, date);
prep.setDate(2, date);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...