이 문제와 관련된 많은 질문을 발견했지만 모든 것을 시도했지만 아직 성공하지 못했습니다.데이터베이스에 날짜를 삽입하십시오. 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;
}
}
내가 시도 무엇 :
com.Parameters.Add(database.CreateParameter("@Admitdate", PatientRegistration.AdmitDate.ToString("dd/MM/yyyy")));
및
com.Parameters.Add(database.CreateParameter("@Admitdate", "'"+PatientRegistration.AdmitDate+"'"));
this link 그때 01,230,570,467,937,731,516과 노력 위에서 언급 한 바와 같이 다음과 같이 내 코드입니다
피연산자 유형 충돌 : 73,210
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));
이러한 방법이 예외 던져 INT는 날짜와 호환되지를
내가로부터 PatientRegistration.AdmitDate
을받은 값은 다음과 같습니다 {2/25/2013 12:00:00 AM}
I 이 모든 방법으로 시도했지만 구할 수 없었습니다. 티. 여기에서 문제를 찾아 내도록 도와주세요.
감사합니다 ...
이편집 :
내 데이터베이스 스키마 :이 질문은 이미 여기에 (가까운 투표) 답변이있을 수 있습니다
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 참조),하지만 내 문제와 함께 작동하지 않는 것 같습니다
Answer : 몇 가지 조사 후 나는이 문제가 데이터베이스에서 실수로 인해 발생하는 것을 발견했습니다.
나는 ReleaseDate 필드에 값을 전달하지 않았으며 데이터베이스에 default value
으로 설정했습니다. 그 기본값은 날짜와 호환되지 않는다고 말합니다. 그래서 그것이이 문제의 원인입니다. 나는, 아 쇼크 쿠마르
테이블 스키마 –
게시자의 열의 데이터 형식은 무엇입니까? –
@ SimonWhitehead- AdmitDate를 Date와 DateTime 두 가지 유형으로 시도했습니다. 그러나 동일한 예외가 발생합니다. – DevT