如何将多个表单中的值插入SQL数据库的同一行中

时间:2019-06-16 06:59:46

标签: c# sql-server winforms

基本上,我有多种形式将数据保存到SQL Servre数据库中。然后datatable将显示已编译的数据。但是,由于我已将数据从两种不同的形式保存到相同的database中,因此数据表将具有两行(请参见[截屏])。而且由于我的情况,我必须对数据允许使用空值。

因此,如何将来自不同forms的多个值保存到SQL Server数据库的同一行中?希望有可能。下面是我的代码:

表格1

private void Bnext_Click(object sender, EventArgs e)
{
  //Do SQL for Inspecdate
  string mainconn = ConfigurationManager.ConnectionStrings["Delivery_Inspection.Properties.Settings.SavertbConnectionString"].ConnectionString;
  SqlConnection sqlconn = new SqlConnection(mainconn);
  sqlconn.Open();
  string Dateinspect = DateTime.Parse(DTinspec.Text).ToString("dd/MM/yyyy");
  SqlCommand cmd = new SqlCommand("insert into Rtbdata(Inspectiondate) values ('" + Dateinspect + "' )", sqlconn);
    int i = cmd.ExecuteNonQuery();
    if (i != 0)
       {
        MessageBox.Show("Saved");
       }
    else
       {
        MessageBox.Show("Error");
       }

    sqlconn.Close();
    this.Hide();
    FormsCollection.autodataset.Show();
    }

表格2-与下面的代码相同,除了下面的代码

SqlCommand cmd = new SqlCommand("insert into Rtbdata(Vehnum) values ('" + TBvehicleno.Text + "')", sqlconn);

this.Hide();
FormsCollection.datatable.Show();

1 个答案:

答案 0 :(得分:0)

假设您确保只能同时打开一个Form1实例和一个Form2实例,那么您只需要将两个insert语句组合为一个,同时从两个表单中获取值即可。可通过Forms集合访问“其他”表单(即,如果您对Form1的click事件做出反应,则为Form2,反之亦然)。 还请研究SQL注入。您的代码非常容易受到攻击。使用参数进行插入。这也使您可以将Date添加为日期类型而不是字符串。 最后,请将您的SqlConnections包装在using块中。 您将在此站点上找到大量有关所有这些点的示例,并进行一些研究。