伙计们,我正在尝试学习多对多关系数据库,但是在“链接/连接”表中插入数据时遇到了麻烦。
这是我的数据库的样子:
现在,由于我的应用程序是C#中的Windows桌面应用程序,因此我有一个简单的Form,其中有5个文本框和一个按钮,看起来就像这样:
注意:图像2-红色代表带有.Text的文本框名称,蓝色代表我将输入的数据类型。表tblEngineer
中已经存在EngineerID 1、2和3。
现在,按添加时,我想在表Date
中输入Phone Number
和tblTicketDetail
的值,并在表EngineerID 1
中输入EngineerID 2
,EngineerID 3
和tblTicket_Engineer
的值。表tblEngineer
中已经有一些行。
现在,如果我只在tblTicket_Engineer中输入一个EngineerID,我将在“添加”按钮的单击事件中执行此操作:
string statement = "INSERT INTO tblTicketDetail(IssueDate,Number) VALUES(@text1,@text2);SELECT SCOPE_IDENTITY()";
using (SqlCommand command = new SqlCommand(statement))
using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ST"].ConnectionString.ToString()))
{
command.Parameters.AddWithValue("@text1", textBox1.Text);
command.Parameters.AddWithValue("@text2", textBox2.Text);
connection.Open();
command.Connection = connection;
ID = command.ExecuteScalar().ToString();
connection.Close();
}
string statement1 = "INSERT INTO tblTicket_Engineer(ID,EID) VALUES(@text1,@text3)";
using (SqlCommand command1 = new SqlCommand(statement1))
using (SqlConnection connection1 = new SqlConnection(ConfigurationManager.ConnectionStrings["ST"].ConnectionString.ToString()))
{
command1.Parameters.AddWithValue("@text1", ID);
command1.Parameters.AddWithValue("@text3", textBox3.Text);
connection1.Open();
command1.Connection = connection1;
command1.ExecuteNonQuery();
connection1.Close();
}
查看表
tblTicket_Engineer
中的外键,并告诉我我的外键是否正确。如何在表
tblTicket_Engineer
中一次输入3行?这就是我按下添加按钮时想要在
tblTicket_Engineer
中发生的情况(对于此图像,值是手动输入的) 最佳答案
您可以使用UNION ALL
。尝试这样的事情:
string statement1 = @"INSERT INTO tblTicket_Engineer(TicketID,EngineerID)
SELECT @ID,@EID1 UNION ALL
SELECT @ID,@EID2 UNION ALL
SELECT @ID,@EID3";
using (SqlCommand command1 = new SqlCommand(statement1))
using (SqlConnection connection1 = new SqlConnection(ConfigurationManager.ConnectionStrings["ST"].ConnectionString.ToString()))
{
command1.Parameters.AddWithValue("@ID", PID);
command1.Parameters.AddWithValue("@EID1", comboBox1.SelectedValue);
command1.Parameters.AddWithValue("@EID2", comboBox2.SelectedValue);
command1.Parameters.AddWithValue("@EID3", comboBox3.SelectedValue);
connection1.Open();
command1.Connection = connection1;
command1.ExecuteNonQuery();
connection1.Close();