如何读取以前的记录C#应用程序?如何解决DBNull错误?
我需要帮助。 我试图通过表中的记录求解一个方程,因此我不知道如何使用表中每行的值 表格图像: 所以我需要计算平均值,当项目为y时,(余额=以前的余额-y的数量),(价格=X的平均值,平均值=X的平均值) 当项目为X时,(余额=先前余额+数量),(平均值=(先前余额*先前平均值)+(价格*数量)/余额 ` ` 有什么提示或建议吗如何读取以前的记录C#应用程序?如何解决DBNull错误?,c#,sql,C#,Sql,我需要帮助。 我试图通过表中的记录求解一个方程,因此我不知道如何使用表中每行的值 表格图像: 所以我需要计算平均值,当项目为y时,(余额=以前的余额-y的数量),(价格=X的平均值,平均值=X的平均值) 当项目为X时,(余额=先前余额+数量),(平均值=(先前余额*先前平均值)+(价格*数量)/余额 ` ` 有什么提示或建议吗 谢谢:)在强制转换之前检查DBNull.Value(表示数据库中不存在的值): if( row[8] != DBNull.Value && row[6]
谢谢:)在强制转换之前检查
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
,则返回默认整数值零
试试这个:
int row6;
int rows8;
int.TryParse(row[6],out row6);
int.TryParse(row[8],out row8);
int ybalance = row8 - row6;
int xbalance = row8 + row6;
我的意思是,问题是为什么我会得到DBNull逻辑错误?错误:“对象不能从DBNull转换为其他类型。”因为数据库中的某个地方有null值,您正试图转换为其他类型。检查发生了什么线路异常,并找出在该线路上使用了来自DB的哪些数据。感谢您的回复。但是,它不希望继续计算余额和“if(row[7]==Null);”,因为我将断点设置为“da.Fill(ds);”。它只是一直在数第[6]行和第[8]行。我想知道你是怎么处理的
double avgcost=Convert.ToDouble(第[9]行)
您的行[9]是DBNull,那么如果您发现它是DBNull,您想要设置什么值?
int row6;
int rows8;
int.TryParse(row[6],out row6);
int.TryParse(row[8],out row8);
int ybalance = row8 - row6;
int xbalance = row8 + row6;