gpt4 book ai didi

c# - "System.InvalidCastException: Specified cast is not valid"- 日期时间

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

我正在更新我网站中的某些字段,但出现以下错误:

System.InvalidCastException: Specified cast is not valid.

以及错误所在的代码(如错误信息所示):

Line 77: productObj.QuantityInStock = dt.Rows[0]["QuantityInStock"].ToString();

Line 78:productObj.MinQuantity = dt.Rows[0]["MinQuantity"].ToString();

Line 79:productObj.DateUpdated =(DateTime)dt.Rows[0]["DateUpdated"]; //This is where error comes

Line 80:productObj.DateCreated = (DateTime)dt.Rows[0]["DateCreated"];

Line 81: }

我的更新查询是这样的:

public int Update(Product obj)
{
string query = "update tblProduct set ProdName=@pname,ProdDescription=@pdesc,ProdSize=@psize,ProdPrice=@pprice,QuantityInStock=@qis,MinQuantity=@mq WHERE ProductID=@pid";

List<SqlParameter> lstParams = new List<SqlParameter>();
lstParams.Add(new SqlParameter("@pid", obj.ProductID));
lstParams.Add(new SqlParameter("@pname", obj.ProdName));
lstParams.Add(new SqlParameter("@pprice", obj.ProdPrice));
lstParams.Add(new SqlParameter("@pdesc", obj.ProdDescription));
lstParams.Add(new SqlParameter("@psize", obj.ProdSize));
lstParams.Add(new SqlParameter("@qis", obj.QuantityInStock));
lstParams.Add(new SqlParameter("@mq", obj.MinQuantity));

return DBUtility.ModifyData(query, lstParams);
}

Product 类如下所示:

public class Product : IModel
{
public int ProductID;
public string ProdName;
public string ProdDescription;
public string ProdSize;
public string ProdPrice;
public int CompanyID;
public string ProdPhoto;
public string QuantityInStock;
public string MinQuantity;
public int CategoryID;
public DateTime DateCreated;
public DateTime DateUpdated;
}

这个方法似乎有错误:

public Product SelectByID(int ID)
{
string query = "select * from tblProduct where ProductID=@pid";
List<SqlParameter> lstParams = new List<SqlParameter>();
lstParams.Add(new SqlParameter("@pid", ID));

DataTable dt = DBUtility.SelectData(query, lstParams);

Product productObj = new Product();
if (dt.Rows.Count > 0)
{
productObj.ProdName = dt.Rows[0]["ProdName"].ToString();
productObj.ProdDescription = dt.Rows[0]["ProdDescription"].ToString();
productObj.CompanyID = Convert.ToInt32(dt.Rows[0]["CompanyID"]);
productObj.ProductID = Convert.ToInt32(dt.Rows[0]["ProductID"]);
productObj.CategoryID = Convert.ToInt32(dt.Rows[0]["CategoryID"]);
productObj.ProdSize = dt.Rows[0]["ProdSize"].ToString();
productObj.ProdPrice = dt.Rows[0]["ProdPrice"].ToString();
productObj.QuantityInStock = dt.Rows[0]["QuantityInStock"].ToString();
productObj.MinQuantity = dt.Rows[0]["MinQuantity"].ToString();
productObj.DateUpdated = (DateTime)dt.Rows[0]["DateUpdated"]; //This where error comes
productObj.DateCreated = (DateTime)dt.Rows[0]["DateCreated"];
}

return productObj;
}

在我的数据库中我也提到了数据类型作为DateTime,但为什么会出现这个错误?

我更新的方法如下所示:

protected void btnUpdate_Click(object sender, EventArgs e)
{
Product prodObj = new ProductLogic().SelectByID(Convert.ToInt32(Request.QueryString["ID"]));

prodObj.ProdName = txtName.Text;
prodObj.ProdPrice = txtPrice.Text;
prodObj.ProdDescription = txtDesc.Text;
prodObj.MinQuantity = txtMinQty.ToString();
prodObj.QuantityInStock = txtInStock.ToString();
prodObj.ProductID = Convert.ToInt32(Request.QueryString["ID"]);

int updateResult = new ProductLogic().Update(prodObj);

if (updateResult > 0)
{
lblUpdateRes.Text = "Detail(s) updated successfully!";
lblUpdateRes.ForeColor = System.Drawing.Color.Green;
}
else
{
lblUpdateRes.Text = "There was some error while updating your detail(s). Please try again later!";
lblUpdateRes.ForeColor = System.Drawing.Color.Red;
}

}

有什么想法/建议吗?

编辑:1这是我的 table 的图片:

enter image description here

最佳答案

DateTime 在 .NET 中不能为 null。如果您的数据库可以有空值,那么您可以将 DateUpdated 的类型更改为可为空的日期/时间 (DateTime?):

productObj.DateUpdated = (DateTime?)(dt.Rows[0]["DateUpdated"] == DBNull.Value ? null : dt.Rows[0]["DateUpdated"]);

或者用一个“神奇”的值来表示null:

productObj.DateUpdated = (DateTime)(dt.Rows[0]["DateUpdated"] == DBNull.Value ? DateTime.MinValue : dt.Rows[0]["DateUpdated"]);

关于c# - "System.InvalidCastException: Specified cast is not valid"- 日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32231821/

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