2015-02-28 5 views
-1

У меня есть код, написанный на C#, и я хочу сравнить два значения даты."Указанный прилив недействителен?"

Первое значение - из базы данных, а второе значение - строка.

Я пытался конвертировать их в актуальном состоянии, но это ошибка я получаю все время,

enter image description here

медведь со мной, если ответ кажется настолько очевидным ... Я новичок в C#


string a, b; 
      label32.Text = DateTime.Now.ToString("dd/MM/yyyy"); 
      b = label32.Text; 
      OleDbConnection con = new OleDbConnection(); 

      con.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Rock.accdb"; 
      con.Open(); 
      var query1 = "SELECT datear FROM leave WHERE name='" + label14.Text + "'"; 
      using (var command = new OleDbCommand(query1, con)) 
      { 
       using (var reader = command.ExecuteReader()) 
       { 

        while (reader.Read()) 
        { 
//this is where i get error 
         a = reader.GetString(reader.GetOrdinal("datear")).ToString(); 
         DateTime d = Convert.ToDateTime(a); 
         DateTime f = Convert.ToDateTime(b); 
         d.ToString("dd/MM/yyyy"); 
         f.ToString(); 
         if (d > f) 
         { 
          label30.Text = "On Campus"; 
         } 
         else 
         { 
          label30.Text = "Off Campus"; 
         } 

        } 
       } 
      } con.Close(); 
+2

Любой шанс, d скажите нам, какая строка кода забрасывает xception? –

+2

используйте параметры команды. НЕ объединяйте строки, используя пользовательский ввод! –

+0

Если вы можете указать, как сравнить два значения даты, когда они получены из базы данных (я использую MS Access) –

ответ

1

Заменить этот a = reader.GetString(reader.GetOrdinal("datear")).ToString();

к этому

a= reader.GetDateTime(0).ToString(); 

Спасибо, ребята, что нашли время, чтобы решить мою проблему ...

0

Попробуйте использовать метод DateTime.Parse():

Re разместить эту часть:

DateTime d = Convert.ToDateTime(a); 
DateTime f = Convert.ToDateTime(b); 
d.ToString("dd/MM/yyyy"); // it just a call of a method, it doesn't change the state of the object 
f.ToString(); // it too 

To:

DateTime d = DateTime.Parse(a); 
DateTime f = DateTime.Parse(b); 
if (d > f) 
{ 
    label30.Text = "On Campus"; 
} 
// and so on 
+0

Стоит попробовать, но ... такая же ошибка ... –

+0

Возможно, вам следует определить вашу культуру, например dateValue = DateTime.Parse (dateString, yourCulture); –

+0

Возможно, вы неправильно поняли ... исключение бросается в a = reader.GetString (reader.GetOrdinal ("datear")). ToString(); я думаю, что он должен что-то сделать с получением формы формы DB –

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