c# - 想要更新数据库,因为我从它的计算中读取
问题描述
我正在尝试为银行 MS 运行计算现在我想从数据库中读取应计利息,然后在进行下一次读取之前更新该值我目前在 while 循环中尝试了此操作,其中命令文本无法更改,而读者是开放的,因此不会工作,任何想法/解决方案。我曾考虑过使用数组来保存数据,但不确定如何在读取后将其过滤掉
更新:在以数组的形式引入缓存后,我试图执行更新,它说不存在这样的列 product.prodid 尽管这是用来读取的,所以确实存在
更新 2:代码现在更新到数据库但不正确,由于某种原因,它在 Accrued 列中存储相同的值而不是每个单独的值,我可以将此错误本地化到任一 for 循环,我认为一种解决方案可能是使用 J 作为参数并使其等于帐户 ID,确保每行都更新然后下一个,这可行吗?
private void Btn_AccInt_Click(object sender, EventArgs e)
{
connection.Open();
command = connection.CreateCommand();
int max = 0;
double IntAccint = 0.0;
command.CommandText = "SELECT balance, accrued, intrate FROM account, product WHERE account.prodid = product.prodid;";
reader = command.ExecuteReader();
double[] storedrate = new double[100];
while (reader.Read())
{
string AccIntrest, AccBal, Intrate;
AccBal = reader[0].ToString();
AccIntrest = reader[1].ToString();
Intrate = reader[2].ToString();
double IntAccbal, IntIntrat;
IntAccbal = double.Parse(AccBal);
IntAccint = double.Parse(AccIntrest);
IntIntrat = double.Parse(Intrate);
IntAccint = IntAccint + ((IntAccbal * IntIntrat) / 365);
for (int i = 0; i < reader.StepCount; i++)
{
storedrate[i] = IntAccint;
max = reader.StepCount;
}
}
reader.Close();
Update = connection.CreateCommand();
for (int j = 0; j < max; j++ )
{
Update.CommandText = "UPDATE account SET accrued = @Accured";
IntAccint = storedrate[j];
Update.Parameters.AddWithValue("Accured", IntAccint);
Update.ExecuteNonQuery();
}
}
解决方案
推荐阅读
- algorithm - 与大O比较和对比
- html - 如何将 div 中的文本放置在图像旁边?
- css - React CSS 应用顺序
- testlink - 如何在 Testlink 上允许对已执行的测试用例进行需求版本链接管理
- flutter - 在 Flutter 中获取 Future var 的长度
- go - Textile Go - 通过 HTTP API 将文件添加到线程的描述不明确
- android - 使用 ConstraintLayout 中的圆形定位时如何设置按钮边距?
- python - 如何从熊猫数据框中的列中删除不必要的信息
- ios - Apple Seach Ads Discovery Campaigns 卡在等待受众规模验证
- c# - 在 C# 中创建对象和对象序列化