我有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
插入培训表。
答案 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,您拥有插入所需的所有客户信息。