Я нашел много вопросов по этому вопросу, и я пробовал все, но не смог добиться успеха.Вставить дату в базу данных в C#
Мне нужно передать дату в базу данных SQL Server. мой код выглядит следующим образом:
public bool CreatePatient()
{
IDbConnection connection = database.CreateOpenConnection();
IDbTransaction transaction = database.BeginTransaction(connection);
try
{
GenerateRegNo();
SQL_STATEMENT = "INSERT INTO TblPatientRegistration(RegistrationNo, HospitalID, NIC, AdmitDate, BHTNo, WardNo)
VALUES(@RegNo, @HospiatlNo, @NIC, @Admitdate, @BHTNo, @WardNo)";
IDbCommand com = database.CreateCommandTransaction(SQL_STATEMENT, connection, transaction);
com.Parameters.Add(database.CreateParameter("@RegNo", PatientRegistration.RegistrationNo));
com.Parameters.Add(database.CreateParameter("@HospiatlNo", PatientRegistration.HospitalID));
com.Parameters.Add(database.CreateParameter("@NIC", PatientRegistration.NIC));
com.Parameters.Add(database.CreateParameter("@Admitdate", PatientRegistration.AdmitDate));
com.Parameters.Add(database.CreateParameter("@BHTNo", PatientRegistration.BHTNo));
com.Parameters.Add(database.CreateParameter("@WardNo", PatientRegistration.WardNo));
if (com.ExecuteNonQuery() > 0)
{
string updStatement = "Update TblControl set RegNo=RegNo+1";
IDbCommand com2 = database.CreateCommandTransaction(updStatement, connection, transaction);
com2.ExecuteNonQuery();
transaction.Commit();
return true;
}
else
{
transaction.Rollback();
return false;
}
}
catch (Exception)
{
transaction.Rollback();
return false;
}
}
То, что я пробовал:
Как уже упоминалось выше Link
com.Parameters.Add(database.CreateParameter("@Admitdate", PatientRegistration.AdmitDate.ToString("dd/MM/yyyy")));
com.Parameters.Add(database.CreateParameter("@Admitdate", "'"+PatientRegistration.AdmitDate+"'"));
тогда я попытался с this link
String UrDate = PatientRegistration.AdmitDate.ToString("dd/MM/yyyy");
System.Globalization.DateTimeFormatInfo dateInfo = new System.Globalization.DateTimeFormatInfo();
dateInfo.ShortDatePattern = "dd/MM/yyyy";
DateTime validDate = Convert.ToDateTime(UrDate, dateInfo);
com.Parameters.Add(database.CreateParameter("@Admitdate", validDate));
Эти методы бросают это исключение:
Операнд тип столкновения: ИНТ несовместима с датой
Значение я получил PatientRegistration.AdmitDate
от это: {2/25/2013 12:00:00 AM}
I пробовал с этими всеми методами, но не смог спасти i т. пожалуйста, помогите мне разобраться с проблемой здесь.
Спасибо ...
EDIT:
Моя схема базы данных:
CREATE TABLE [dbo].[TblPatientRegistration](
[RegistrationNo] [char](10) NOT NULL,
[HospitalID] [char](10) NOT NULL,
[NIC] [char](10) NOT NULL,
[AdmitDate] [date] NOT NULL,
[BHTNo] [varchar](10) NOT NULL,
[WardNo] [varchar](10) NOT NULL,
[ReleaseDate] [date] NOT NULL,
CONSTRAINT [PK_TblPatientRegistration_1] PRIMARY KEY CLUSTERED
(
[RegistrationNo] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
Этот вопрос, возможно, уже есть ответ здесь (близкий голос): -> я (см. вариант 2), но, похоже, не работает с моей проблемой
Ответ: после нескольких исследований я обнаружил, что эта проблема возникает из-за моей ошибки в базе данных.
Я не передал значение в поле ReleaseDate, и он установил значение default value
в базе данных. это значение по умолчанию - это несовместимое с датой. Так вот в чем причина этой проблемы. любой, как я могу передать свое значение, как указано Ашок Кумар
Опубликовать схему таблицы –
Каков тип данных вашей колонки? –
@ SimonWhitehead- я попробовал AdmitDate как Date и DateTime обоих типов. но он дает такое же исключение – DevT