2013-01-13 2 views
0

datetime을 SQL 데이터베이스에 저장하려고합니다. 그 목적을 위해 datetime2(0) 변수를 사용합니다.문자열에서 날짜 및/또는 시간을 변환 할 때 변환하지 못했습니다.

protected void InsertDB(string title, string desc, string cat, string path) 
{ 
    string now = DateTime.Now.ToString("dd-MM-yyyy h:mm:ss tt"); 
    title = title.Length == 0 ? "Untitled" : title; 
    cat = cat.Length == 0 ? "Uncategorized" : cat; 
    string cs = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString; 
    using (SqlConnection con = new SqlConnection(cs)) 
    { 
     try 
     {      
      SqlCommand cmd = new SqlCommand(@"INSERT INTO gallery (img_title, img_desc, img_cat, img_date, img_path) 
              VALUES (@title, @desc, @cat, @date, @path)", con); 
      con.Open(); 
      cmd.Parameters.AddWithValue("@title", title.Trim()); 
      cmd.Parameters.AddWithValue("@desc", desc.Trim()); 
      cmd.Parameters.AddWithValue("@cat", cat.Trim()); 
      cmd.Parameters.AddWithValue("@date", now.Trim()); 
      cmd.Parameters.AddWithValue("@path", path.Trim()); 
      int result = cmd.ExecuteNonQuery(); 
      if (result == 1) 
      { 
       msg_lbl.Visible = true; 
       msg_lbl.Text = "New Image is uploaded."; 
       title_txt.Text = ""; 
       desc_txt.Text = ""; 
       cat_txt.Text = "";       
      } 
      else 
      { 
       msg_lbl.Visible = true; 
       msg_lbl.Text = "Error occured."; 
      } 
     } 
     catch (SqlException ex) 
     { 
      msg_lbl.Visible = true; 
      msg_lbl.Text = ex.Message; //I get this exception here 
     } 
     catch (Exception ex) 
     { 
      msg_lbl.Visible = true; 
      msg_lbl.Text = ex.Message; 
     } 

    } 
+2

, 그것은 작동합니다. ** 우리는 ** 날짜 형식의 개념을 가지고 있습니다. 내부적으로 .net 및 SQL Server는 원하는 방식으로 저장하고 필요에 따라 프레젠테이션 문제를 걱정합니다. – billinkc

답변

3

SQL 쿼리에서 "now"변수를 전달할 때 오류가 발생해야합니다. Img_date 열이 datetime 필드 인 경우 값을 문자열이 아닌 datetime으로 전달해야합니다. 매개 변수 @date에 값 Datetime.Now을 할당하십시오 :

당신이 당신의 현재 지역 변수를 제거하고 단순히 매개 변수에 DateTime.Now를 사용하여 얻을 경우
cmd.Parameters.AddWithValue("@date", DateTime.Now); 
1
:

하지만 난 항상이 예외를 얻을이 : 문자 문자열 여기

에서 날짜 및/또는 시간을 변환하는 오류를 생성하는 내 코드 때

변환 실패

DateTime2 열을 사용하는 경우 매개 변수 유형을 구체적으로 설정해야합니다. 기본값은입니다은 AddWithValue입니다.

이 시도 :

SqlParameter parm = cmd.Parameters.Add("@date", SqlDbType.DateTime2); 
parm.Value = DateTime.Now; 

MSDN에 따르면

@date 매개 변수가 날짜, 날짜에 매핑하거나 서버의 DATETIME2 데이터 입력 할 수 있습니다. 새 datetime 데이터 형식을 사용하는 경우 은 명시 적으로 매개 변수의 SqlDbType 속성을 데이터 형식 인 인스턴스로 설정해야합니다. Variant를 사용하거나 매개 변수 값을 암시 적으로 제공하면 datetime 및 smalldatetime 데이터 형식과의 역 호환성 문제가 발생할 수 있습니다. 이 도움이

http://msdn.microsoft.com/en-us/library/bb675168.aspx

희망.

0

tsql에서 'tt'형식 지정자를 허용하지 않으므로이 오류가 발생합니다.

관련 문제