对数据库的更新不会持续,而对数据库的添加和删除会持续

时间:2019-06-23 11:03:28

标签: c# dataset

我正在编写一个打印物理标签的程序。您将建立一个标签队列(在数据库表中),程序稍后将运行该标签并进行打印。我目前正在编码一个允许您修改队列的部分。本质上,数据行已导出为一系列允许您更改的文本框中的可视形式。单击按钮,然后从中更新相应的行。 该行的更新工作正常。我的问题是更新无法持久保存程序关闭。数据库中的附加项和删除项一样持续存在,这使我感到困惑。尽管我将数据库“复制到输出目录”更改为“如果较新则复制”,但更新问题解决了添加/删除的持久性(感谢Stack Overflow)。

我也尝试过使用LoadDataRow方法并更改链接的数据网格,但是效果是相同的。

这是更新例程 它可以工作,但是如果您关闭程序并重新启动,则更新会反向:

private void buttonUpdateQLine_Click(object sender, EventArgs e)
    {
        int indexOfRow = int.Parse(textBoxQ0.Text); //gets row to update

        for (int i = 1; i <= 25; i++) //move through textboxes and update appropriate column
        {
            TextBox curText = (TextBox)panelQueueUtilities.Controls["textBoxQ" + i.ToString()];
            string changeText = curText.Text.ToString();
            databaseLabelsDataSetMainQueue.Tables[0].Rows[indexOfRow].SetField(i, changeText);
        }
        databaseLabelsDataSetMainQueue.Tables[0].AcceptChanges();
        try
        {
            tableMainQueueTableAdapter.Update(databaseLabelsDataSetMainQueue.TableMainQueue);
        }
        catch (System.Exception ex)
        {
            MessageBox.Show("Failed to update to Main Queue - " + ex);
        }


    }

这是我用来添加一行的例程。添加是持久的!

private void addRowToMainQ()
    {
        string[] queue = CollectQueueEntry(); // gets the data elsewhere
        DataRow row = databaseLabelsDataSetMainQueue.Tables[0].NewRow();

        //row["Id"] = "1";
        row["Name"] = queue[0];
        int answer = 0;
        int.TryParse(queue[1], out answer);
        row["qty"] = answer;
        row["Price"] = queue[2];
        row["PotSize"] = queue[3];
        row["Customer"] = queue[4];
        row["Barcode"] = queue[5];
        row["Description"] = queue[6];
        row["CommonName"] = queue[7];
        row["PictureFile"] = queue[8];
        row["ColourFont"] = queue[9];
        row["ColourFontColour"] = queue[10];
        row["FontBold"] = queue[11];
        row["FontItalic"] = queue[12];
        row["ColourBorderColour"] = queue[13];
        row["ColourBackgroundColour"] = queue[14];
        row["notes"] = queue[15];
        row["Genus"] = queue[16];
        row["Species"] = queue[17];
        row["Variety"] = queue[18];
        row["AGM"] = queue[19];
        row["Picture1"] = queue[20];
        row["Picture2"] = queue[21];
        row["Picture3"] = queue[22];
        row["Picture4"] = queue[23];
        row["OrderNo"] = queue[24];

        databaseLabelsDataSetMainQueue.TableMainQueue.Rows.Add(row);
        dataGridViewMainQ.EndEdit();
        try
        {
            tableMainQueueTableAdapter.Update(databaseLabelsDataSetMainQueue.TableMainQueue);
        }
        catch (System.Exception ex)
        {
            MessageBox.Show("Failed to add to Main Queue - " + ex);
        }

正如我所说,没有收到错误。只是添加和删除例程的结果(未提供删除例程)确实会使程序关闭,但是更新例程的效果却没有。任何指导将不胜感激,谢谢

0 个答案:

没有答案