2013-12-20 5 views
0
значение маски параметра текстового поля

вставки (shortDate) в SQL Server 2008 имеет ошибку «не может распознать строку как дата» моего код:вставка короткой дата базы данных SQL

cmd.Parameters.Add("@dilivery_date", SqlDbType.Date).Value = 
Convert.ToDateTime(recievedDateTxt.Text).ToShortDateString(); 

ответ

1

не использует ToShortDateString, так как вы собираетесь установить SqlDbType.Date можно непосредственно установить DateTime значение, как показано ниже

cmd.Parameters.Add("@dilivery_date", SqlDbType.Date).Value = 
Convert.ToDateTime(recievedDateTxt.Text); 

, если у вас есть формат для ввода datetimem, то лучше использовать DateTime.TryParseExact

DateTime result; 
if (DateTime.TryParseExact(
    recievedDateTxt.Text,   // The string you want to parse 
    "dd/MM/yyyy",     // The format of the string you want to parse. 
    CultureInfo.InvariantCulture, // The culture that was used 
            // to create the date/time notation 
    DateTimeStyles.None,   // Extra flags that control what assumptions 
            // the parser can make, and where whitespace 
            // may occur that is ignored. 
    out result))     // Where the parsed result is stored. 
{ 
     // your other codes 
     cmd.Parameters.Add("@dilivery_date", SqlDbType.Date).Value = result; 
} 
+0

я попробовал это .. но та же ошибка ... маска направление текстовое поле справа налево – Hamonbatra

+0

затем, 'Convert.ToDateTime (recievedDateTxt.Text)' может не сработать, что значение вам вход? – Damith

+0

i вставлен 18/12/2013 – Hamonbatra

0

Вы можете использовать метод TryParseExact()

Попробуйте: если ваш DateFormat является: dd/MM/yyyy

DateTime result; 
DateTime.TryParseExact(recievedDateTxt.Text,"dd/MM/yyyy",CultureInfo.InvariantCulture,DateTimeStyles.None,out result) 
{ 
    cmd.Parameters.Add("@dilivery_date", SqlDbType.Date).Value =result;    
} 
0

ли вы попробовать использовать этот метод. Я использую этот метод.

 

try 
      { 
       using (SqlConnection con = new SqlConnection(ConnectionSetting.SQLDBConnectionString())) 
       { 
        con.Open(); 
        using (SqlCommand com = new SqlCommand("spName", con)) 
        { 
         com.CommandType = CommandType.StoredProcedure; 
         com.Parameters.Add(new SqlParameter("@dilivery_date", Convert.ToDateTime(recievedDateTxt.Text))); 
         using (SqlDataAdapter da = new SqlDataAdapter()) 
         { 
          da.SelectCommand = com; 
          da.Fill(dtResult); 
         } 

        } 

       } 

       return dtResult; 

      } 
      catch (Exception) 
      { 

       throw; 
      } 

+0

как ваш ответ решает проблему? – Damith

+0

Это просто еще один подход. Это то, что я использую при передаче значений хранимой процедуре. Я опубликовал, потому что думал, что это может кому-то помочь. – Damith

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