使用c#将数据同时导出到两个表中
本文关键字:两个 数据 使用 | 更新日期: 2023-09-27 17:52:45
我试图将id,姓和名输入到表中,然后根据组合框输入,我创建了另一个记录,之后保存了学生的id和选择了组合框的团队的id。这是我的代码。一切都运行得很好,唯一的问题是,在TeamPlayers表中的记录没有被添加。拜托谁?!?
try
{
string team = null;
using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=;Persist Security Info=False;"))
{
OleDbCommand comm = new OleDbCommand("INSERT INTO Students(BaruchID, FirstName, LastName) VALUES(@id, @first, @last)", conn);
conn.Open();
comm.Parameters.AddWithValue("@id", tbBaruchID.Text);
comm.Parameters.AddWithValue("@id", FirstName.Text);
comm.Parameters.AddWithValue("@id", LastName.Text);
comm.ExecuteNonQuery();
conn.Close();
}
using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:/Users/Junglists/Documents/Visual Studio 2013/Projects/SACC_Baruch/SACC_Baruch/Teams.accdb;Persist Security Info=False;"))
{
OleDbCommand comm = new OleDbCommand("SELECT TeamNum FROM Teams WHERE TeamName='" + cbTeam.Text +"'", conn);
conn.Open();
OleDbDataReader dr = comm.ExecuteReader(CommandBehavior.SingleResult);
if (dr.Read())
{
team = dr["TeamNum"].ToString();
}
conn.Close();
}
using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:/Users/Junglists/Documents/Visual Studio 2013/Projects/SACC_Baruch/SACC_Baruch/Teams.accdb;Persist Security Info=False;"))
{
OleDbCommand comm = new OleDbCommand("INSERT INTO TeamPlayers(ID, BaruchID, TeamID) VALUES(@i, @id, @teamid)", conn);
conn.Open();
comm.Parameters.AddWithValue("@i", 1);
comm.Parameters.AddWithValue("@id", tbBaruchID.Text);
comm.Parameters.AddWithValue("@teamid", int.Parse(team));
conn.Close();
}
MessageBox.Show("Student Added for team"+ cbTeam.Text);
}
在添加参数值时不使用第一个INSERT语句中的参数名。所有的comm.Parameters.AddWithValue("@id", .....);
线都用@id
。因此,实际id值永远不会保存到student表。
第二个INSERT总是使用1作为'id'的值。假设'id'是一个主键,它只能包含唯一的值。使'id'字段成为IDENTITY字段,然后将其从INSERT语句中删除。每次将一条记录添加到表中,它将按照递增的顺序获得下一个数字。
更正代码:http://dotnetfiddle.net/Dr9842