Хочу обновить базу, так как я читаю из нее расчет - PullRequest
0 голосов
/ 22 марта 2019

Я пытаюсь выполнить расчет для банковской MS. Теперь я хочу прочитать начисленные проценты из базы данных, а затем обновить значение перед выполнением следующего чтения. Я сейчас пробовал это в цикле while, в котором текст команды не может бытьизменилось, пока читатель открыт, поэтому не будет работать, любые идеи / решения.Я думал об использовании массива для хранения данных, но не уверен, как отфильтровать это после чтения

ОБНОВЛЕНИЕ: после введения кэша в виде массива я пытаюсь выполнить обновление, и он говоритчто такого столбца product.prodid не существует, хотя он используется для чтения, поэтому существует

ОБНОВЛЕНИЕ 2: теперь код обновляется в базе данных, но некорректно, по какой-то причине он сохраняет то же значение в столбце «Начислено»Для каждого отдельного значения я могу локализовать эту ошибку в любом из циклов for. Я думаю, что одним из решений могло бы быть использование J в качестве параметра и установление его равным идентификатору учетной записи, гарантируя, что каждая строка обновляется, а затем следующая, может ли это работать?

 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();


        }


    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...