gpt4 book ai didi

c# - C# 向数据库中插入日期

转载 作者:太空宇宙 更新时间:2023-11-03 21:49:56 25 4
gpt4 key购买 nike

我发现了很多关于这件事的问题,我尝试了一切,但还是没有成功。

我需要将日期传递到我的 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")));

this link

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));

这些方法抛出异常:

Operand type clash: int is incompatible with date

我从 PatientRegistration.AdmitDate 收到的值是:{2/25/2013 12:00:00 AM}

我尝试了所有这些方法,但无法保存它。请帮我找出这里的问题。

谢谢...

编辑:

我的数据库架构:

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 字段,它在数据库中设置为 默认值。该默认值是与日期不兼容的值。所以这就是这个问题的原因。正如 Ashok kumar 所说,我如何传递我的值(value)

最佳答案

我只在@Admitdate 行修改了你的代码。

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));

String admitDate = txtAdmitDate.Text;
DateTime parsedAdmitDate;
if (DateTime.TryParseExact(admitDate, "d/M/y", CultureInfo.InvariantCulture, DateTimeStyles.None, out parsedAdmitDate))
PatientRegistration.AdmitDate = parsedAdmitDate;

//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;
}
}

如果您需要更多帮助,请告诉我。

关于c# - C# 向数据库中插入日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15060472/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com