当前位置: 首页 > news >正文

编辑功能查询问题解决

问题点:

image

 报错:
“System.InvalidCastException”类型的异常在 System.Data.dll 中发生,但未在用户代码中进行处理 其他信息: 指定的转换无效。
解决方法:

修改前的代码示例

 public AccessoryInfo GetInfo(Int32 accessoryId){AccessoryInfo entity = null;SqlParameter[] parms = new SqlParameter[]{new SqlParameter("@FieldValue", SqlDbType.NVarChar, 50),new SqlParameter("@IsByID", SqlDbType.Bit)};parms[0].Value = accessoryId;parms[1].Value = true;using (SqlDataReader rdr = SQLHelper.ExecuteReaderStoredProcedure(SQLHelper.MESConnString, "Prod_Accessory_GetInfo", parms)){if (rdr.Read()){//entity = new AccessoryInfo(rdr.GetInt32(0), rdr.GetString(1), rdr.GetString(2), rdr.GetString(3), rdr.GetString(4),//    rdr.GetInt32(5), rdr.GetDouble(6), rdr.GetDateTime(7), rdr.GetString(8), rdr.GetDecimal(9),//    rdr.GetDecimal(10), rdr.GetDateTime(11), rdr.GetString(12), rdr.GetDateTime(13), rdr.GetDateTime(14), rdr.GetString(15), rdr.GetDateTime(20), rdr.GetDateTime(21), rdr.GetDateTime(22));entity = new AccessoryInfo();entity.AccessoryId = rdr.GetInt32(0);entity.AccessoryCodoe = rdr.GetString(1);entity.AccessoryName = rdr.GetString(2);entity.Lot = rdr.GetString(3);entity.SerialNumber = rdr.GetString(4);entity.Status = rdr.GetInt32(5);entity.UserTime = rdr.GetFloat(6);entity.LoseTime = rdr.GetDateTime(7);entity.SupplierCode = rdr.GetString(8);entity.InStockQty = rdr.GetDecimal(9);entity.CurrentQty = rdr.GetDecimal(10);entity.StartThawTime = rdr.GetDateTime(11);entity.CreateBy = rdr.GetString(12);entity.CreateTime = rdr.GetDateTime(13);entity.UnsealTime = rdr.GetDateTime(14);entity.AccessoryTypeName = rdr.GetString(15);entity.SupplierName = rdr.GetString(16);entity.AccessoryType = rdr.GetInt32(17);entity.ProdDateTime = rdr.GetDateTime(18);entity.ItemId = rdr.GetInt32(19);entity.EndThawTime = rdr.GetDateTime(20);entity.EndStirTime = rdr.GetDateTime(21);entity.KaifengTime= rdr.GetDateTime(22);}rdr.Close();}return entity;}

修改后的代码示例

public AccessoryInfo GetInfo(Int32 accessoryId)
{AccessoryInfo entity = null;SqlParameter[] parms = new SqlParameter[]{new SqlParameter("@FieldValue", SqlDbType.NVarChar, 50),new SqlParameter("@IsByID", SqlDbType.Bit)};parms[0].Value = accessoryId;parms[1].Value = true;using (SqlDataReader rdr = SQLHelper.ExecuteReaderStoredProcedure(SQLHelper.MESConnString, "Prod_Accessory_GetInfo", parms)){if (rdr.Read()){entity = new AccessoryInfo();entity.AccessoryId = rdr.GetInt32(rdr.GetOrdinal("AccessoryId"));entity.AccessoryCodoe = Convert.ToString(rdr["AccessoryCodoe"]);entity.AccessoryName = Convert.ToString(rdr["AccessoryName"]);entity.Lot = Convert.ToString(rdr["Lot"]);entity.SerialNumber = Convert.ToString(rdr["SerialNumber"]);entity.Status = Convert.ToInt32(rdr["Status"]);entity.UserTime = Convert.ToDouble(rdr["UserTime"]);entity.LoseTime = Convert.ToDateTime(rdr["LoseTime"]);entity.SupplierCode = Convert.ToString(rdr["SupplierCode"]);entity.InStockQty = Convert.ToDecimal(rdr["InStockQty"]);entity.CurrentQty = Convert.ToDecimal(rdr["CurrentQty"]);entity.StartThawTime = Convert.ToDateTime(rdr["StartThawTime"]);entity.CreateBy = Convert.ToString(rdr["CreateBy"]);entity.CreateTime = Convert.ToDateTime(rdr["CreateTime"]);entity.UnsealTime = Convert.ToDateTime(rdr["UnsealTime"]);entity.AccessoryTypeName = Convert.ToString(rdr["AccessoryTypeName"]);entity.SupplierName = Convert.ToString(rdr["SupplierName"]);entity.AccessoryType = Convert.ToInt32(rdr["AccessoryType"]);entity.ProdDateTime = Convert.ToDateTime(rdr["ProdDateTime"]);entity.ItemId = Convert.ToInt32(rdr["ItemID"]);entity.EndThawTime = Convert.ToDateTime(rdr["EndThawTime"]);entity.EndStirTime = Convert.ToDateTime(rdr["EndStirTime"]);entity.KaifengTime = Convert.ToDateTime(rdr["KaifengTime"]);}rdr.Close();}return entity;
}

 

之后报错:
entity.EndThawTime = Convert.ToDateTime(rdr["EndThawTime"]); entity.EndStirTime = Convert.ToDateTime(rdr["EndStirTime"]); entity.KaifengTime = Convert.ToDateTime(rdr["KaifengTime"]);

报错: “System.InvalidCastException”类型的异常在 mscorlib.dll 中发生,但未在用户代码中进行处理 其他信息: 对象不能从 DBNull 转换为其他类型。

处理方法:

修改后的 SQL 查询

SELECT [AccessoryId], [AccessoryCodoe], [AccessoryName], [Lot], [SerialNumber], t.[Status], [UserTime], ISNULL([LoseTime], '1900-01-01') AS [LoseTime], [SupplierCode], [InStockQty], [CurrentQty], ISNULL([StartThawTime], '1900-01-01') AS [StartThawTime], t.[CreateBy], t.[CreateTime], ISNULL([UnsealTime], '1900-01-01') AS [UnsealTime], t1.AccessoryTypeName,t2.VendorName AS SupplierName,t.AccessoryType,t.ProdDateTime,bi.ItemID,ISNULL(t.EndThawTime, '1900-01-01') AS EndThawTime,ISNULL(t.EndStirTime, '1900-01-01') AS EndStirTime,ISNULL(t.KaifengTime, '1900-01-01') AS KaifengTime 
FROM [Prod_Accessory] t
JOIN dbo.Prod_AccessoryType t1 ON t1.AccessoryTypeId = t.AccessoryType
JOIN dbo.Basal_Supplier t2 ON t2.VendorCode = t.SupplierCode
JOIN dbo.Basal_Item AS bi ON t.AccessoryCodoe = bi.ItemCode
WHERE [AccessoryId] = 52;

  

http://www.wxhsa.cn/company.asp?id=2543

相关文章:

  • Ubuntu 18.04 虚拟机 VScode无法正常输入中文解决办法
  • manacher算法
  • [能源化工] 面向锂电池RUL预测的开源项目全景速览
  • 源码app陪玩,React技巧之发出http请求 - 云豹科技
  • qoj1847 Elephants
  • p4085
  • Excel甘特图 - 教程
  • 基于ArcGIS的通用界址点导入导出工具设计与实现
  • python 函数作用域
  • 基于Python+Vue开发的鲜花商城管理系统源码+运行
  • 文献阅读 | AutoCodeBench
  • 【ARM Cache 及 MMU 系列文章 6.5 -- 如何进行 Cache miss 统计?】
  • Idea win 快捷键大全
  • VSCode+neovim工作环境快速构建
  • 25.9.12随笔联考总结
  • macos
  • Java基础程序设计
  • CF482C Game with Strings
  • 算法复杂度
  • 0912模拟赛总结
  • 相机标定
  • 深度学习隐私测试框架PrivacyRaven全面解析
  • 华硕灵耀双屏不定时死机,开机蓝屏 其一解决方法
  • 完整教程:Java 抽象(abstract)关键字
  • 自建rustdesk服务器,不填写中继地址无法连接的解决
  • Typescript中Type 类型的实现原理
  • 2025.9.13——1黄
  • 数据结构与算法-30.图-拓扑排序
  • 1.进制转化
  • CF1796E Colored Subgraphs