【发布时间】:2016-04-16 09:28:28
【问题描述】:
我有一个文本框和日期时间,我可以在其中输入一个整数。我希望将其存储在 SQL Server 数据库中。如果我什么都不输入,那么我将存储NULL。
但是,如果文本框留空,我会收到错误输入字符串格式不正确。
我该如何解决这个问题,并将 null 放入数据库?
代码如下:
public void Add_ItemSeasonalPrices(string ItemCode, DateTime FromDate, DateTime ToDate, decimal WholeSaleForFirstUnit, decimal WholeSaleForSecondUnit, decimal WholeSaleForThirdUnit,
decimal HalfWholeSaleForFirstUnit, decimal HalfWholeSaleForSecondUnit, decimal HalfWholeSaleForThirdUnit,
decimal DistributorForFirstUnit, decimal DistributorForSecondUnitt)
{
DAL.DataAccessLayer DAL = new DAL.DataAccessLayer();
DAL.open();
SqlParameter[] param = new SqlParameter[22];
param[0] = new SqlParameter("@ItemCode", SqlDbType.NVarChar, 25);
param[0].Value = ItemCode;
param[1] = new SqlParameter("@FromDate", SqlDbType.DateTime);
param[1].Value = FromDate;
param[2] = new SqlParameter("@ToDate", SqlDbType.DateTime);
param[2].Value = ToDate;
param[3] = new SqlParameter("@WholeSaleForFirstUnit", SqlDbType.Decimal);
param[3].Value = WholeSaleForFirstUnit;
param[4] = new SqlParameter("@WholeSaleForSecondUnit", SqlDbType.Decimal);
param[4].Value = WholeSaleForSecondUnit;
param[5] = new SqlParameter("@WholeSaleForThirdUnit ", SqlDbType.Decimal);
param[5].Value = WholeSaleForThirdUnit;
param[6] = new SqlParameter("@HalfWholeSaleForFirstUnit", SqlDbType.Decimal);
param[6].Value = HalfWholeSaleForFirstUnit;
param[7] = new SqlParameter("@HalfWholeSaleForSecondUnit", SqlDbType.Decimal);
param[7].Value = HalfWholeSaleForSecondUnit;
param[8] = new SqlParameter("@HalfWholeSaleForThirdUnit", SqlDbType.Decimal);
param[8].Value = HalfWholeSaleForThirdUnit;
param[9] = new SqlParameter("@DistributorForFirstUnit", SqlDbType.Decimal);
param[9].Value = DistributorForFirstUnit;
param[10] = new SqlParameter("@DistributorForSecondUnit", SqlDbType.Decimal);
param[10].Value = DistributorForSecondUnit;
DAL.ExecuteCommand("Add_ItemSeasonalPrices", param);
DAL.close();
}
和 btnSave 中的这段代码
Item.Add_ItemSeasonalPrices(txt_ItemCode.Text, Convert.ToDateTime(FromDate.Text), Convert.ToDateTime(ToDate.Text), Convert.ToDecimal(txt_WholeSaleForFirstUnit.Text), Convert.ToDecimal(txt_WholeSaleForSecondUnit.Text),
Convert.ToDecimal(txt_WholeSaleForThirdUnit.Text), Convert.ToDecimal(txt_HalfWholeSaleForFirstUnit.Text),
Convert.ToDecimal(txt_HalfWholeSaleForSecondUnit.Text), Convert.ToDecimal(txt_HalfWholeSaleForThirdUnit.Text),
Convert.ToDecimal(txt_DistributorForFirstUnit.Text), Convert.ToDecimal(txt_DistributorForSecondUnit.Text));
还有这张桌子
CREATE TABLE [dbo].[ItemSeasonalPrices](
[ItemCode] [nvarchar](25) NOT NULL,
[FromDate] [date] NULL,
[ToDate] [date] NULL,
[WholeSaleForFirstUnit] [decimal](18, 3) NULL,
[WholeSaleForSecondUnit] [decimal](18, 3) NULL,
[WholeSaleForThirdUnit] [decimal](18, 3) NULL,
[HalfWholeSaleForFirstUnit] [decimal](18, 3) NULL,
[HalfWholeSaleForSecondUnit] [decimal](18, 3) NULL,
[HalfWholeSaleForThirdUnit] [decimal](18, 3) NULL,
[DistributorForFirstUnit] [decimal](18, 3) NULL,
[DistributorForSecondUnit] [decimal](18, 3) NULL,
[DistributorForThirdUnit] [decimal](18, 3) NULL,
[ExportForFirstUnit] [decimal](18, 3) NULL,
[ExportForSecondUnit] [decimal](18, 3) NULL,
[ExportForThirdUnit] [decimal](18, 3) NULL,
[RetailForFirstUnit] [decimal](18, 3) NULL,
[RetailForSecondUnit] [decimal](18, 3) NULL,
[RetailForThirdUnit] [decimal](18, 3) NULL,
[EndUserForFirstUnit] [decimal](18, 3) NULL,
[EndUserForSecondUnit] [decimal](18, 3) NULL,
[EndUserForThirdUnit] [decimal](18, 3) NULL,
[PriceDefault] [int] NULL
) ON [PRIMARY]
【问题讨论】:
-
你可以使用属性验证
-
您应该简化您的代码并切中要害。许多人不会费心阅读所有这些代码。
标签: c# sql .net sql-server database