如何读取以前的c#记录应用程序?如何解决DBNull错误
本文关键字:何解决 DBNull 错误 应用程序 解决 读取 何读取 记录 | 更新日期: 2023-09-27 17:50:24
我需要帮助。我试图通过表中的记录来解决一个方程,所以我不知道如何使用表中每一行的值。
表图片:https://i.stack.imgur.com/fZuVb.jpg
所以我需要计算avg,当项目是y时,(balance =前余额- y的数量),(price = X的平均值,avg = X的平均)。
当项目为X时,(balance =前一个余额+数量),(Avg =(前一个余额*前一个Avg) +(价格*数量)/balance。
foreach (DataRow row in ds.Tables[0].Rows)
{
//row[6]=qty
//row[7]=price
//row[8]=balance
//row[9]=avg
int ybalance = Convert.ToInt32(row[8]) - Convert.ToInt32(row[6]);
int xbalance = Convert.ToInt32(row[8]) + Convert.ToInt32(row[6]);
double TotalCost = Convert.ToInt16(row[6]) * Convert.ToDouble(row[7]);
double avgcost = Convert.ToDouble(row[9]);
double avg = ((ybalance * avgcost) + TotalCost) / xbalance;
if (Convert.ToInt32(row[7]) == null)
{
row[8] = ybalance;
row[7] = Convert.ToDouble(row[9]);
row[9] = Convert.ToDouble(row[9]);
}
else
{
row[8] = xbalance;
row[9] = avg;
}
'有什么提示或建议吗?
谢谢:)
在强制转换前检查DBNull.Value
(表示数据库中不存在的值):
if( row[8] != DBNull.Value && row[6] != DBNull.Value )
int ybalance = Convert.ToInt32(row[8]) - Convert.ToInt32(row[6]);
要了解null和DBNull之间的区别,请阅读
您需要使用int.TryParse()
。如果值为DBNull.Value
,则返回默认整数值0。
试试这个:
int row6;
int rows8;
int.TryParse(row[6],out row6);
int.TryParse(row[8],out row8);
int ybalance = row8 - row6;
int xbalance = row8 + row6;