Ошибка при вставке данных даты - PullRequest
0 голосов
/ 15 июля 2009

Я вставляю данные пациента в базу данных. но когда я отправляю подробности, получая эту ошибку: «Неявное преобразование из типа данных 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. Просьба кто-нибудь изменить его.

Спасибо, Sumit

Ответы [ 3 ]

1 голос
/ 15 июля 2009

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

Самое простое, что если вы разрабатываете это приложение, это использовать тип данных Date в БД.

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

Если вы используете SQL Server 2008, вы можете рассмотреть возможность использования некоторых новых типов данных Date .

0 голосов
/ 15 июля 2009

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

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

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

0 голосов
/ 15 июля 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...