C# 在主窗体上显示新插入的SQL数据

C# 在主窗体上显示新插入的SQL数据,c#,sql,winforms,C#,Sql,Winforms,我搞不懂这个。我对C#还相当陌生,但我觉得这个问题的答案应该很简单 我有一个表单,它显示从SQL数据库中提取的数据。用户可以打开一个新窗口并向数据库中添加新条目,单击“确定”后,信息将插入数据库,窗口将关闭 问题是,一旦发生这种情况,主窗体上显示的信息就不会显示刚刚输入的数据。我尝试添加一个函数,在用户提交时刷新主窗体,但新信息不会显示 有人知道如何在主窗体上显示新插入的SQL数据吗?以下是我的代码供参考: try { conn.Open(

我搞不懂这个。我对C#还相当陌生,但我觉得这个问题的答案应该很简单

我有一个表单,它显示从SQL数据库中提取的数据。用户可以打开一个新窗口并向数据库中添加新条目,单击“确定”后,信息将插入数据库,窗口将关闭

问题是,一旦发生这种情况,主窗体上显示的信息就不会显示刚刚输入的数据。我尝试添加一个函数,在用户提交时刷新主窗体,但新信息不会显示

有人知道如何在主窗体上显示新插入的SQL数据吗?以下是我的代码供参考:

        try
        {
            conn.Open();
            SqlCommand myCommand = new SqlCommand("INSERT INTO customParts (part_num, date, customer, orig_call, vendor, vendor_pn, price, delivery, packaging, notes) VALUES (@partnum, @getdate, @cust, @callout, @vend, @vend_PN, @cost, @deliv, @pkging, @notes)", conn);
            myCommand.Parameters.AddWithValue("@partnum", partnum);
            myCommand.Parameters.AddWithValue("@getdate", getdate);
            myCommand.Parameters.AddWithValue("@cust", cust);
            myCommand.Parameters.AddWithValue("@vend", vend);
            myCommand.Parameters.AddWithValue("@callout", callout);
            myCommand.Parameters.AddWithValue("@vend_PN", vend_PN);
            myCommand.Parameters.AddWithValue("@cost", cost);
            myCommand.Parameters.AddWithValue("@deliv", deliv);
            myCommand.Parameters.AddWithValue("@pkging", pkging);
            myCommand.Parameters.AddWithValue("@notes", notes);
            myCommand.ExecuteNonQuery();
        }
        catch (Exception ie)
        {
            MessageBox.Show(ie.Message);
        }
        finally
        {
            //Close the connection
            conn.Close();
            //Reload the main window to show new changes
            mainForm firstForm;
            firstForm = new mainForm();
            //Close the window
            this.Close();
        }
谢谢

编辑:

我尝试将此方法添加到我的主窗体:

public static void refreshThis()
{
    Form mainForm = new mainForm();
    mainForm.Refresh();
}
并这样称呼它:

        finally
        {
            //Close the connection
            if (conn.State != ConnectionState.Closed)
            {
                conn.Close();
            }
            mainForm.refreshThis();
            this.Close();
        }

但它似乎仍然不起作用?

在代码中有以下几行:

mainForm firstForm;
firstForm = new mainForm();
虽然这些行将创建一个新表单,该表单将被更新,但一旦您离开finally块,它将被销毁,用户将永远看不到它


我认为您真正想要的是在
mainForm
类中公开一个
Refresh
方法,并从子表单调用它。

在您的代码中有以下几行:

mainForm firstForm;
firstForm = new mainForm();
虽然这些行将创建一个新表单,该表单将被更新,但一旦您离开finally块,它将被销毁,用户将永远看不到它


我认为您真正想要的是在
mainForm
类中公开一个
Refresh
方法,并从子表单调用它。

我假设这是针对Winforms的,而不是ASP.NET(标记)。是的,很抱歉,谢谢!要避免异常,请检查您的连接是否已关闭,如果(conn.State!=ConnectionState.Close)conn.Close();我想ConnectionState.Closed也可以吗?我想这是针对Winforms而不是ASP.NET(标记)。是的,很抱歉,谢谢!要避免异常,请检查您的连接是否已关闭,如果(conn.State!=ConnectionState.Close)conn.Close();我想ConnectionState.Closed也能用吗?好的,我试过了,但还是不能用。也许我走错了方向?我在帖子末尾添加了我所做的。您仍在创建
mainForm
的新实例。您需要刷新用户已打开的实例。好的,我尝试了此操作,但仍然无法使其工作。也许我走错了方向?我在帖子末尾添加了我所做的。您仍在创建
mainForm
的新实例。您需要刷新用户已打开的实例。