2014-05-07 4 views
0

Я пытаюсь обновить строку в базе данных, где одно из значений даты/времени пуст.Извлечь запись из базы данных, где значение времени равно null

Код, приведенный ниже, дает ошибку: - Параметр? _2 не имеет значения по умолчанию.

Кто-нибудь знает, как работать с нулевыми/пустыми значениями?

Приветствия

OleDbCommand com = new OleDbCommand("SELECT count(*) from DI WHERE [Task] = ? AND [Time_Off] = ?", Program.DB_CONNECTION); 
com.Parameters.Add(new OleDbParameter("", "DI")); 
com.Parameters.Add(new OleDbParameter("", null)); 
int count = (int)com.ExecuteScalar(); 

if (count > 0) 
{ 
    OleDbCommand com1 = new OleDbCommand("UPDATE DI SET [Time_OFF] = ? WHERE [Task] = ? AND [Time_Off] = ?", Program.DB_CONNECTION); 
    com1.Parameters.Add(new OleDbParameter("", DateTime.Now.TimeOfDay)); 
    com1.Parameters.Add(new OleDbParameter("", "DI")); 
    com1.Parameters.Add(new OleDbParameter("", null)); 
    com1.ExecuteNonQuery(); 
} 
else 
{ 
    DIPerson = DIlist[DIcomboBox.SelectedIndex]; 

    OleDbCommand com2 = new OleDbCommand("INSERT INTO DI ([Person], [Task], [Time_On]) VALUES (?, ?, ?)", Program.DB_CONNECTION); 
    com2.Parameters.Add(new OleDbParameter("", DIPerson.ID)); 
    com2.Parameters.Add(new OleDbParameter("", "DI")); 
    com2.Parameters.Add(new OleDbParameter("", DateTime.Now.TimeOfDay)); 

    com2.ExecuteNonQuery(); 
} 
+0

Какая строка кода дает ошибку? –

+2

Должно быть «[Time_Off] имеет значение null». И если вы хотите указать параметр, скорее всего, вам понадобится DBNULL, но не null –

+0

@Anthony Elaborate и сделайте это ответом. –

ответ

0
OleDbCommand com = new OleDbCommand("SELECT count(*) from DI WHERE [Task] = ? AND [Time_Off] is null", Program.DB_CONNECTION); 
com.Parameters.Add(new OleDbParameter("", "DI")); 
int count = (int)com.ExecuteScalar(); 

if (count > 0) 
{ 
    OleDbCommand com1 = new OleDbCommand("UPDATE DI SET [Time_OFF] = ? WHERE [Task] = ? AND [Time_Off] is null", Program.DB_CONNECTION); 
    com1.Parameters.Add(new OleDbParameter("", DateTime.Now.TimeOfDay)); 
    com1.Parameters.Add(new OleDbParameter("", "DI")); 
    com1.ExecuteNonQuery(); 
} 
else 
{ 
    DIPerson = DIlist[DIcomboBox.SelectedIndex]; 

    OleDbCommand com2 = new OleDbCommand("INSERT INTO DI ([Person], [Task], [Time_On]) VALUES  (?, ?, ?)", Program.DB_CONNECTION); 
    com2.Parameters.Add(new OleDbParameter("", DIPerson.ID)); 
    com2.Parameters.Add(new OleDbParameter("", "DI")); 
    com2.Parameters.Add(new OleDbParameter("", DateTime.Now.TimeOfDay)); 

    com2.ExecuteNonQuery(); 
} 
Смежные вопросы