如何将数据插入关系数据库

时间:2016-04-12 05:00:19

标签: c# sql-server

我有3个Microsoft SQL Server表,其中包含以下内容:

所有3个表都是相关的。

我需要将数据插入到我可以执行的Training表中。

问题是只知道客户名称,将customers表的CustomerID列插入到培训表中。

我创建了一个单独的类,因为我将在我的应用程序中使用它。

 public void UpdateDatabase(string sql_query)
 {
        using (SqlConnection conn = new SqlConnection(connection_string))
        {
            using (SqlCommand comm = new SqlCommand(sql_query, conn))
            {
                conn.Open();
                comm.ExecuteNonQuery();
                conn.Close();
            }
        }
    }

这是我的主类,用于更新我的数据库。

在我的按钮中单击即使我有以下代码。

 private void btnSave_Click(object sender, EventArgs e)
 {
        DB NewJob = new DB();

        if (TabControl1.SelectedTab == TabControl1.TabPages["TPTraining"])//If TPTraiing Tab is selected
            {
                try
                {
                    string Customer = TPTcboCustomer.Text;
                    string Product = TPTcboProduct.Text;
                    DateTime DemoDate = TPTdtpDate.Value.Date;
                    string EndResult = TPTtxtEndResult.Text;

                    NewJob.UpdateDatabase("INSERT INTO TrainingDemos(CustomerID, ProductID, DemoDate, EndResult)VALUES('" + Customer + "','" + Product + "','" + DemoDate + "','" + EndResult + "')");
                    MessageBox.Show("Training/Demo Saved Sussesfully");
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }

Customer变量包含我从Customer Table获得的客户名称。我必须插入CustomerID,而不是将客户名称插入培训表。

string Customer = TPTcboCustomer.Text;

加载表单后,TPTcboCustomer组合框控件将从客户表中检索所有客户名称。

长话短说,如何仅通过了解客户名称将CustomerID插入培训表。

1 个答案:

答案 0 :(得分:0)

您需要执行另一个查询才能获取CustomerID。一旦你有了,你就可以进行插入。

我的意思是,你需要确认它是真正的客户,对吗?

我通常更愿意填写下拉(或类似字段)给客户,以便在有限数量的项目可供选择时进行选择。就个人而言,我会在初始查询中拉入所有客户并使用这些客户对象填充下拉列表。然后,您只需使用所选项目的对象信息进行插入。

使Customer成为强类型:

public class Customer
{
    public int Id { get; set; }
    public string Name { get; set; }
    // Other properties as desired

    public override string ToString()
    {
        return Name ?? "<No Name>";
    }
}

完成后,请阅读所有客户,并使用您的Customer对象列表填充组合框。 ToString()会在下拉菜单中显示客户的姓名。然后你就必须这样做:

Customer customer = (Customer)TPTcboCustomer.SelectedItem;

然后BLAM-O,您拥有插入所需的所有客户信息。

相关问题