2013-11-15 1 views
0

SQL 서버에서 단일 행 데이터를 가져 와서 MySQL에 삽입하기 위해 VS2010 C#에서 응용 프로그램을 개발 중입니다.유효한 문자열에 저장된 값의 마지막 두 문자를 제거하십시오

데이터를 가져 와서 특정 문자열 변수에 저장했습니다. 코드를 가져 오는 것은 아래와 같습니다.

SqlCommand cmd = new SqlCommand("SELECT TOP (1) s_name, s_city, s_address, s_added_date, s_added_by FROM tblAQI ORDER BY s_added_date DESC", SSCon); 
     SqlDataReader dr = cmd.ExecuteReader(); 
     while (dr.Read()) 
     { 
      s_name = (dr["s_name"].ToString()); 
      s_city = (dr["s_city"].ToString()); 
      s_address = (dr["s_address"].ToString()); 
      s_added_date = (dr["s_added_date"].ToString()); 
      s_added_by = (dr["s_added_by"].ToString()); 
     } 

모든 값은 문자열 형식으로 저장됩니다. s_added_date에 문제가 있습니다.이 변수에 datetime 값이 포함되어 있습니다. 예 : 11/15/2013 12:01:00 AM로 삽입 할 수 없습니다. AM 때문에 생각합니다.

내 삽입 코드는 다음과 같습니다.

  mcmd.CommandText = "INSERT INTO tblaqi(s_name,s_city,s_address,s_added_date,s_added_by) VALUES(@s_name,@s_city,@s_address,s_added_date,s_added_by)"; 
     mcmd.Parameters.AddWithValue("@s_name", s_name); 
     mcmd.Parameters.AddWithValue("@s_city", s_city); 
     mcmd.Parameters.AddWithValue("@s_address", s_address); 
     mcmd.Parameters.AddWithValue("@s_added_by", s_added_by); 
     mcmd.Parameters.AddWithValue("@s_added_date", s_added_date); 

     int count = mcmd.ExecuteNonQuery(); 
     if (count != 0) 
     { 
      MessageBox.Show("Success..!!"); 
     } 
     else 
      MessageBox.Show("Need to work"); 

제 질문은이 문제가 무엇이 될 것입니다.

미리 감사드립니다.

+1

왜 'datetime' 열에'AM '이 포함되어 있습니까? 문자열은 저장하지 말고 올바른 형식을 사용하십시오. –

답변

1

해결 방법 1 : 쿼리가 잘못되었습니다

mcmd.CommandText = "INSERT INTO tblaqi(s_name,s_city,s_address,s_added_date,s_added_by) VALUES(@s_name,@s_city,@s_address,@s_added_date,@s_added_by)"; 

해결 방법 2 : 당신은

mcmd.CommandText = "INSERT INTO tblaqi(s_name,s_city,s_address,s_added_date,s_added_by) VALUES(@s_name,@s_city,@s_address,s_added_date,s_added_by)"; 
                                  ^^^   ^^^ 

아래로 insert into 성명에서 매개 변수의 @ 기호 누락 그것은이 있어야한다 :

s_added_date=s_added_date.Substring(0, s_added_date.Length - 3);//stores only 11/15/2013 12:01:00 
+0

당신은 맞지만 OP처럼 근본적인 문제는 아닌 것 같습니다. –

1

실제로 올바른 유형을 먼저 저장해야합니다 (varchar 대신 datetime).

그렇지 않으면 잘못된 형식, 현지화 문제 및 성능 저하의 위험이 있으므로 항상이 파일을 DateTime으로 구문 분석해야합니다. DateTime.ParseExact을 사용할 수 있습니다 :

string s_added_date = dr.GetString("s_added_date"); 
DateTime dtAdded = DateTime.ParseExact(s_added_date , "MM/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture); 
mcmd.Parameters.AddWithValue("@s_added_date", dtAdded); 
관련 문제