2014-12-11 2 views
-1

Я пытаюсь вставить строку в таблицу БД, и я получаюНесовместимые типы данных: ожидается DATE получил число - при вставке в БД

ORA-00932: inconsistent datatypes: expected DATE got NUMBER

Я не знаю, почему это происходит так все даты SYSDATE

String insertNewAlarmStat = 
     "insert into alarmes (id_alarm, alarm_key, id_notif, sever, urgency, date_hour_start, date_hour_modif, date_hour_end, " + 
       "state, state_rec, date_hour_rec, id_user_rec, id_system_rec, " + 
       "type, cause, " + 
       "num_events, id_entity_g, type_entity_g, " + 
       "desc_entity_g, problem, " + 
       "time_urg_act, max_urg_act, time_end, time_arq, lim, rec_oblig, dn, num_events_ps, id_alarm_o, id_notif_o, text_ad, domain, date_hour_reg) " + 
       "values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, SYSDATE, SYSDATE, SYSDATE, SYSDATE, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, SYSDATE)"; 
PreparedStatement prpstmt = null ; 
try { 
     prpstmt = conn.prepareStatement(insertNewAlarmStat); 

     prpstmt.setInt(1, randomNumberGenerator()); 
     prpstmt.setString(2, UUID.randomUUID().toString()); 
     prpstmt.setString(3, UUID.randomUUID().toString()); 
     prpstmt.setInt(4, randomNumberGenerator()); 
     prpstmt.setInt(5, 8); 
     prpstmt.setInt(6, 8524); 
     prpstmt.setString(7, UUID.randomUUID().toString()); 
     prpstmt.setString(8, UUID.randomUUID().toString()); 
     prpstmt.setString(9, UUID.randomUUID().toString()); 
     prpstmt.setString(10, UUID.randomUUID().toString()); 
     prpstmt.setString(11, "KABOOM"); 
     prpstmt.setInt(12, 8); 
     prpstmt.setInt(13, 43); 
     prpstmt.setString(14, UUID.randomUUID().toString()); 
     prpstmt.setString(15, UUID.randomUUID().toString()); 
     prpstmt.setString(16, UUID.randomUUID().toString()); 
     prpstmt.setString(17, UUID.randomUUID().toString()); 
     prpstmt.setInt(18, 2); 
     prpstmt.setInt(19, 224); 
     prpstmt.setInt(20, 2); 
     prpstmt.setInt(21, 224);    
     prpstmt.setInt(22, 2); 
     prpstmt.setInt(23, 224);    
     prpstmt.setInt(24, 2); 
     prpstmt.setString(25, UUID.randomUUID().toString()); 
     prpstmt.setString(26, UUID.randomUUID().toString()); 
     prpstmt.setString(27, UUID.randomUUID().toString()); 
     prpstmt.setInt(28, 2); 

     prpstmt.executeUpdate(); 
} catch (SQLException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

Я судимый этот путь, и я судимый, чтобы удалить SYSDATE и добавить некоторые:

prpstmt.setDate(number, getCurrentDate()); //getCurrent date returns sql.Date

Однако ошибка такая же

Я был отладки в течение некоторого времени, и я не могу найти проблему, что мне не хватает?

+0

Проверьте позиции столбца/значения. Ваши имена 6-8-го столбца начинаются с 'date_', обозначая, что они имеют тип даты, которые не соответствуют значениям, которые вы отправляете. Это было бы моим первым догадком. – gmiley

+0

Ницца я полностью пропустил это! Тем не менее, это не даты, мои 6-8-я значения - 1 номер и 2 varchars – SaintLike

+0

О, подождите! Это проблема. Я не выполнял запрос и некоторые поля отсутствовали. Спасибо :) – SaintLike

ответ

0

Проверьте расположение столбцов по сравнению со значениями, которые вы отправляете для соглашения о типе данных.