2015-03-28 2 views
0

Это мой кодКаков формат даты в базе данных? asp.net

 Establish_Connection con = new Establish_Connection(); 
     string Fname = TxtFirstName.Text; 
     string Lname = TxtLastName.Text; 
     string Email = TxtEmailSingUp.Text; 
     string Password = TxtPasswordSignUp.Text; 
     string DOBDay = DDLDay.SelectedValue; 
     string DOBMonth = DDLMonth.SelectedValue; 
     string DOBYear = DDLYear.SelectedValue; 
     string DOB= DOBYear +"/"+ DOBMonth +"/"+ DOBDay; 
     string Gender = LblGender.SelectedValue; 
     string UserName = txtUserName.Text; 


     string connStr = ConfigurationManager.ConnectionStrings["Database"].ConnectionString; 
     SqlConnection conn = new SqlConnection(connStr); 

      conn.Open(); 

     try 
     { 
      string constr = "INSERT INTO USERS (UserName,FName,LName,DOB,Gender,Email,Password) VALUES (@UserName,@FName,@LName,@DOB,@Gender,@Email,@Password);"; 
      SqlCommand cmd = new SqlCommand(constr,conn); 
      cmd.Parameters.AddWithValue("@Password", Password); 
      cmd.Parameters.AddWithValue("@UserName",UserName); 
      cmd.Parameters.AddWithValue("@DOB",DOB); 
      cmd.Parameters.AddWithValue("@Gender", Gender); 
      cmd.Parameters.AddWithValue("@Email", Email); 
      cmd.Parameters.AddWithValue("@LName", Lname); 
      cmd.Parameters.AddWithValue("@FName", Fname); 

      int affectrows = cmd.ExecuteNonQuery(); 

      Response.Write("connection established"); 
     } 
     catch (Exception ex) 
     { 
      Response.Write("error" + ex.Message.ToString()); 
     } 

    } 

Он продолжает говорить мне об ошибке в ДОБ, и что мне нужно, чтобы преобразовать его даты типа времени, но когда я конвертировать его с помощью Convert.ToDateTime(), она по-прежнему дает мне ошибки. В базе данных тип DateTime, любой может мне помочь в этом?

+0

какое значение у вас есть в поле DOB? –

+0

У меня есть три выпадающих списка день, месяц и год, а их значение - цифры, но в строке я помещаю их в DOB –

+0

вместо '/' с '-' и попробуйте, например, (' string DOB = DOBYear + "-" + DOBMonth + "-" + DOBDay; ') –

ответ

3

Вы должны делать что-то вроде этого:

DateTime DOB= new DateTime(Convert.ToInt32(DOBYear), Convert.ToInt32(DOBMonth), Convert.ToInt32(DOBDay)); 

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

+0

Спасибо, он работал: D <3 –

+0

@KamalSaeed, в этом случае обязательно примите ответ, нажав галочку. – jmcilhinney

0

Код Kamal является правильным.

Базы данных обычно хранят дату/время как число, целая часть которого представляет собой количество дней с даты начала и десятичное число милли/микро/секунд с начала дня. Обычно это абсолютно прозрачно для всех, кто его использует, и его не следует учитывать.

В зависимости от базы данных может быть распознано несколько строковых форматов. SQL Server, например, вероятно, не распознает формат, который вы ему дали, но распознает YYYY-MM-DD. Различные формы DD/MM/YYYY и MM/DD/YYYY могут быть проблемой, и я предпочитаю никогда не использовать их. Обычно я использую DD MMM YYYY (например, «28 марта 2015 года»), когда я использую строки для представления дат, однако на C#, так как он имеет совершенно хороший тип DateTime, в котором AFAIK все драйверы базы данных понимают, что я использую это.