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