2009-07-15 9 views
0

환자 정보를 데이터베이스에 삽입하고 있습니다. 하지만이 오류를 가져 오는 세부 정보를 제출할 때 "데이터 형식 datetime에서 int 로의 암시 적 변환이 허용되지 않습니다.이 쿼리를 실행하려면 CONVERT 함수를 사용하십시오." 날짜 시간으로 간주 데이터베이스 날짜 필드에 PatientProperty.cs날짜 데이터를 삽입하는 중 오류가 발생했습니다.

public class PatientProperty 
{ 
    private string Pdisease; 
    private string Pname; 
    private string Pcategory; 
    private string Paddr; 
    private DateTime Dateofjoining; 
    private int Page; 
public PatientProperty(string PDisease, string PName, string PCategory, string PAddr, DateTime DateOfJoining, int PAge) 
    {  
     this.Pdisease = PDisease; 
     this.Pname = PName; 
     this.Pcategory = PCategory; 
     this.Paddr = PAddr; 
     this.Dateofjoining = DateOfJoining; 
     this.Page = PAge; 
    } 
    public string PDISEASE 
    { 
     get 
     { 
      return Pdisease; 
     } 
     set 
     { 
      Pdisease=value; 
     } 
    } 
    public string PNAME 
    { 
     get 
     { 
      return Pname; 
     } 
     set 
     { 
      Pname = value; 
     } 
    } 
    public string PCATEGORY 
    { 
     get 
     { 
      return Pcategory; 
     } 
     set 
     { 
      Pcategory = value; 
     } 
    } 
    public string PADDRESS 
    { 
     get 
     { 
      return Paddr; 
     } 
     set 
     { 
      Paddr = value; 
     } 
    } 
    public DateTime DATEOFJOINING 
    { 
     get 
     { 
      return Dateofjoining; 
     } 
     set 
     { 
      Dateofjoining = value; 
     } 
    } 
    public int PAGE 
    { 
     get 
     { 
      return Page; 
     } 
     set 
     { 
      Page = value; 
     } 
    } 
} 
PatientRegistration.cs 
public class PatientRegistration 
{ 
    string str = ConfigurationManager.ConnectionStrings["HealthCare"].ConnectionString.ToString();  
    public void InsertPatient(PatientProperty obj) 
    { 
     using (var con = new SqlConnection(str)) 
     { 
      using (var com = new SqlCommand("PatientRegister", con)) 
      { 
       com.CommandType = CommandType.StoredProcedure; 
       com.Parameters.AddWithValue("Pdisease", obj.PDISEASE); 
       com.Parameters.AddWithValue("Pname", obj.PNAME); 
       com.Parameters.AddWithValue("Pcategory", obj.PCATEGORY); 
       com.Parameters.AddWithValue("Paddr", obj.PADDRESS); 
       com.Parameters.AddWithValue("Dateofjoining", obj.DATEOFJOINING); 
       com.Parameters.AddWithValue("Page", obj.PAGE); 
       con.Open(); 
       com.ExecuteNonQuery(); 
       con.Close();   
      } 
     } 
    } 
} 
PatientRegistrationBussiness.cs 
public class PatientRegistrationBussiness 
{ 
    public void AddPatient(PatientProperty obj) 
    { 
     PatientRegistration PR = new PatientRegistration(); 
     PR.InsertPatient(obj);  
    } 
} 
protected void Button1_Click(object sender, System.EventArgs e) 
     { 
      //int id = Convert.ToInt32(TextBox1.Text); 
      string name = TextBox2.Text; 
      string address = TextBox3.Text; 
      string category = RadioButtonList1.Text; 
      int age =Convert.ToInt32(TextBox4.Text); 
      string disease = TextBox5.Text; 
      DateTime date =Convert.ToDateTime(TextBox6.Text);   
     try 
      { 
      PatientRegistrationBussiness obj = new PatientRegistrationBussiness(); 
      PatientProperty PP = new PatientProperty(disease, name, category, address, date, age);   
      obj.AddPatient(PP);   
       Response.Write("Patient details have been successfully added"); 
       TextBox2.Text = string.Empty; 
       TextBox3.Text = string.Empty; 
       TextBox4.Text = string.Empty; 
       TextBox5.Text = string.Empty; 
       TextBox6.Text = string.Empty; 
       RadioButtonList1.SelectedIndex = 0; 
      } 
      catch (Exception ex) 
      { 
       ex.Message.ToString(); 
      } 
      finally 
      { 
       obj = null; 
      }  
} 

: 다음은 내 코드입니다. Pls 누군가 수정하십시오. 데이터베이스가 int를 기대하고 있지만,이 날짜 시간을 제공하는 것처럼

덕분에, 수밋

+0

PatientRegister 저장 프로 시저의 매개 변수 유형 필드 확인 –

답변

1

보인다. 왜 그것을하고 있습니까?

이 응용 프로그램을 개발한다고 가정 할 때 가장 간단한 방법은 DB에 Date 데이터 형식을 사용하는 것입니다.

사용중인 SQL Server의 버전과 필요에 따라 선택할 수있는 항목이 몇 가지 있습니다. 여기에 나열된 날짜 및 시간 데이터 유형을 확인하십시오 (http://msdn.microsoft.com/en-us/library/ms187752.aspx).

SQL Server 2008을 사용하는 경우 some of the new Date data types을 사용해보십시오.

0

날짜 필드 열이 테이블의 int로 정의되어 있기 때문에 Richard가 지적했듯이. 귀하의 질문에 당신은 정확하게 DateTime로 정의 된 언급.

다음 문제는 날짜를 일부 int 변수 또는 그와 비슷한 것으로 할당하려고하는 저장 프로 시저에있는 것 같습니다.

0

나는 Richard와 Brushn에게 동의했다. 명령의 각 매개 변수 등

  SqlParameter param = com.Parameters.Add("@Dateofjoining", SqlDbType.DateTime); 
      param.Value = obj.DATEOFJOINING; 

과 : 또한, 이러한 오류를 방지하기 위해 나는이 방법은 예를 들어, 매개 변수의 설정 해당 DbType과 값을 impicit하는 SqlCommand.Parameters의 추가를 사용하는 것이 좋습니다 생각합니다.

관련 문제