2009-07-15 8 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; 
      }  
} 

В обновляемой базе данных поля, принятый в DateTime. Pls кто-то изменит его.

Спасибо, Sumit

+0

проверить поле параметра в процедуре хранения PatientRegister –

ответ

1

Похоже, ваша база данных ожидает Int, но вы предоставляете DateTime. Зачем ты это делаешь?

Простейшая вещь, предполагающая, что вы разрабатываете это приложение, заключается в использовании типа данных даты в БД.

В зависимости от ваших потребностей и версии SQL Server вы можете выбрать несколько вариантов. Посмотрите приведенные здесь типы данных даты и времени - http://msdn.microsoft.com/en-us/library/ms187752.aspx.

Если вы используете SQL Server 2008, вы можете использовать some of the new Date data types.

0

Как заметил Ричард, это может быть потому, что столбец поля даты определяется как int в таблице. В вашем вопросе вы указываете, что он правильно определен как DateTime.

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

0

Я согласился с Ричардом и Брушном. Кроме того, для предотвращения таких ошибок я думаю, что лучше использовать метод Add из SqlCommand.Parameters в impicit установить соответствующее значение DBTYPE параметра, например:

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

и так далее для каждого параметра команды.

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