【问题标题】:How to insert values from multiple forms into same row in SQL database如何将多个表单中的值插入到 SQL 数据库的同一行中
【发布时间】:2019-06-16 06:59:46
【问题描述】:

基本上,我有多个表单,其中数据将保存到 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();

【问题讨论】:

  • 一般来说,要么有一个插入,要么先插入再更新。
  • 您确实需要先解决注入问题。始终参数化您的 SQL。

标签: c# sql-server winforms


【解决方案1】:

假设您已确保只能同时打开一个 Form1 实例和一个 Form2 实例,那么您只需将两个插入语句合并为一个,同时从两个表单中获取值。 “其他”表单(即 Form2,如果您对 Form1 的单击事件做出反应,反之亦然)可通过 Forms 集合访问。 也请研究 SQL 注入。您的代码非常脆弱。为您的插入使用参数。这也将使您能够将日期添加为日期类型,而不是字符串。 最后,请将您的 SqlConnections 包装在 using 块中。 你会在这个网站上找到很多关于所有这些要点的例子,只要稍微研究一下。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-27
    • 1970-01-01
    • 1970-01-01
    • 2013-05-21
    相关资源
    最近更新 更多