2016-03-08 3 views
0

Я работаю в базе данных ASP.NET C# и MySQL.Заявление с несколькими условиями, не возвращающими ожидаемое поведение в C#

В поле doDate моей таблице базы данных я могу иметь три значения:

  1. Null
  2. 0000-00-00
  3. 2016-03-08

Мне нужно, когда значения поля doDate:

  1. 0000-00-00
  2. 2016-03-08

Отключена TextBoxtxtdoDate и я попытался это:

txtdoDate1 = dr["doDate"] == DBNull.Value ? "" : dr["doDate"] == "0000-00-00" ? "0000-00-00" : Convert.ToDateTime(dr["doDate"]).ToString("dd/MM/yyyy"); 

    if (txtdoDate1.ToString() != "") 
    { 
     txtdoDate.Text = txtdoDate1.ToString(); 
     txtdoDate.Enabled = false; 
    } 
    else 
    { 
     txtdoDate.Enabled = true; 
    } 

Но когда значения месторождения doDate:

0000-00-00

TextBoxtxtdoDate включена и пусто.

Не могли бы вы помочь мне разобраться с проблемой?

Заранее благодарен.

EDIT # 1

protected void loadsRecord() 
{ 
    using (OdbcConnection cn = 
    new OdbcConnection(ConfigurationManager.ConnectionStrings["ConnMySQL"].ConnectionString)) 
    { 
     sql = @" SELECT ..... ; "; 

     using (OdbcCommand command = 
       new OdbcCommand(sql, cn)) 
     { 
      try 
      { 
       command.Connection.Open(); 
       dr = command.ExecuteReader(); 

       while (dr.Read()) 
       { 

       txtdoDate1 = dr["doDate"] == DBNull.Value ? "" : (dr["doDate"] == "0000-00-00" ? "0000-00-00" : Convert.ToDateTime(dr["doDate"]).ToString("dd/MM/yyyy")); 

       if (txtdoDate1.ToString() != "") 
        { 
         txtdoDate.Text = txtdoDate1.ToString(); 
         txtdoDate.Enabled = false; 
        } 
        else 
        { 
         txtdoDate.Enabled = true; 
        } 
       } 
      } 
      catch (Exception ex) 
      { 
       throw ex; 
      } 
      finally 
      { 
       command.Connection.Close(); 
      } 
     } 
    } 
} 
+0

Что такое тип данных столбца doDate? – Steve

+0

@Steve Спасибо, тип данных столбца doDate - это 'date' –

+0

Я немного озадачен. Это не может работать при загрузке данных из базы данных. Значение '0000-00-00' не является допустимым значением NET DateTime, и вы должны получить сообщение об ошибке при его загрузке. Не могли бы вы показать код, который загружает эту запись из базы данных? – Steve

ответ

0

Это правильное поведение, потому что вы используете следующие if заявление

if (txtdoDate1.ToString() != "") 
{ 
    txtdoDate.Text = txtdoDate1.ToString(); 
    txtdoDate.Enabled = false; 
} 
else 
{ 
    txtdoDate.Enabled = true; 
} 

Когда dr["doDate"] == "0000-00-00" значение, хранящееся в txtdoDate, составляет "0000-00-00", что не является txtdoDate1.ToString() != "". Вы должны изменить это условие в инструкции if следующим образом:

if (txtdoDate1.ToString() != "" && txtdoDate1.ToString() != "0000-00-00") 
0

использовать его как:

txtdoDate1 = dr["doDate"] == DBNull.Value ? "" : (dr["doDate"] == "0000-00-00" ? "0000-00-00" : Convert.ToDateTime(dr["doDate"]).ToString("dd/MM/yyyy")); 

Приложите второе предложение в скобках

+0

Спасибо, но у меня нет изменений в обратном. –