C# - удалить строку из базы данных и обновить ее новой информацией, используя адаптер данных

У меня есть база данных, где я храню свой текущий портфель акций (он же Позиции), и я хочу, чтобы он обновлялся каждый раз, когда я покупаю.

База данных содержит столбцы: 1. Id, 2. Тикер, 3. Акции, 4. ProfitLoss, 5. TradePrice, 6. CurrentPrice и 7. TotalValue

Поэтому я нажимаю кнопку "КУПИТЬ", а затем вставляю новую строку. Если я снова нажму "КУПИТЬ", строка не будет удалена и, следовательно, не будет обновлена ​​новой, потому что основной идентификатор индекса все еще существует.

И это ошибка, которую я получаю:

An unhandled exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll

Additional information: Violation of PRIMARY KEY constraint 'PK__tmp_ms_x__3214EC072159A622'. Cannot insert duplicate key in object 'dbo.Table'. The duplicate key value is (0).

The statement has been terminated.

Что я делаю неправильно? Застрял в этом на пару часов. Спасибо, вот мой код ниже:

// create Positions database
PositionDBDataSetTableAdapters.TableTableAdapter Position_table_adaptor = new PositionDBDataSetTableAdapters.TableTableAdapter();

private void btnBuyToOpen_Click(object sender, EventArgs e)
    {
        // declare variables
        int shares = (int)nudShares.Value;
        decimal commission = 5;
        decimal cost = 0;
        string menuItem = menuSymbol.SelectedItem.ToString();

        // update buying power
        // and purchase and update Positions database
        if (menuItem == "JERO")
        {
            cost = (JERO.Price * shares) + commission;

            // If user has enough buying power,
            // update the buying power,
            // and update positions database.
            if (updateBuyingPower(cost))
            {
                if (Position_table_adaptor.GetData().Select("Ticker = 'JERO'").Length != 0)
                {
                    Position_table_adaptor.GetData().Rows.Find(0).Delete();
                    Position_table_adaptor.Insert(0, "JERO", shares, 0, JERO.Price, JERO.Price, cost - commission);
                }
                else
                {
                    Position_table_adaptor.Insert(0, "JERO", shares, 0, JERO.Price, JERO.Price, cost - commission);
                }
            }
        }
    }

0 ответов

Другие вопросы по тегам