2014-03-24 2 views
0

Я пытался вставить null значения в Date/Time столбец в MS Access, но я продолжаю получать эту ошибкуВставьте нуль в поле Дата/время в MS Access-

Ниже приведены варианты о том, как я установил нуль значения

String processedDate = ""; // doesn't work 
String processedDate = null; // doesn't work 

Я получаю ошибку во время SQL вставки

java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression 

Мой вставки запрос, написанный на Java

INSERT INTO DonorDetails ([SIGNUP DATE],Remarks, [Date Processed])values ('25/03/2014','','') 

Должен ли я явно строить инструкцию SQL без столбца [Обработанная дата], когда я знаю, что значение равно null? Или есть ли более простой способ?

+0

Как вы присваиваете значение заявлению? Ваш код Java не имеет никакого отношения к SQL, который вы опубликовали. – NeplatnyUdaj

ответ

1

Это не очень понятно, как вы построения запроса, но хорошая привычка, чтобы создать подготовленное заявление, как это:

PreparedStatement ps = connection.prepareStatement("INSERT INTO DonorDetails (signup_date, remarks, date_processed) values (?,?,?)"); 
ps.setTimestamp(1, someTimestamp); 
ps.setString(2, someRemark); 
ps.setNull(3, Types.TIMESTAMP); 

Это не будет так сильно зависит от используемая база данных и драйвер, а также решает проблемы, такие как вставка нулевого значения (см. последнюю строку).

P.S. Я не знаю, что скобки ([]) означают в вашей вставке, поэтому я только догадался, что имена столбцов

+0

Думаю, мне придется использовать подготовленное заявление. Кстати, скобка предназначена для определения столбца таблицы, содержащего пробел. – abiieez

+0

Если вы также разрабатываете таблицу, пожалуйста, имейте в виду, что создание столбцов с пробелами не рекомендуется. Лучше использовать подчеркивание. – NeplatnyUdaj

2

В SQL должно быть изображено NULL.

INSERT INTO DonorDetails 
([SIGNUP DATE], Remarks, [Date Processed]) 
VALUES (#2014/03/25#, NULL, NULL) 
String processedDate = "NULL"; 
+0

мой запрос написан на Java – abiieez

+2

Нет, ваш запрос написан на SQL. Оператор 'INSERT' явно является оператором SQL. Вы используете Java, чтобы построить текст вашего запроса и отправить его в БД. –

+0

Я использовал ваш метод и распечатывал изменения в 'NULL'' вместо' NULL'. Я все еще получаю ту же ошибку. – abiieez

Смежные вопросы