c# - 使用 C# 将数据同时导出到 Access 到两个表中

标签 c# sql ms-access insert

我正在尝试将 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

关于c# - 使用 C# 将数据同时导出到 Access 到两个表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22588684/

相关文章:

mysql - 如何阻止 Access 在记录更新后显示 #DELETED?

c# - 使用(非静态)AutoMapper 实例时如何展平嵌套类?

python - OpenCV - 在捕获循环中没有 waitkey 不显示图像

c# - Windows 应用程序的 Twitter OAuth Echo | PIN 码问题

c# - 如何在 C# 中在运行时动态创建和命名对象?

c# - 由同一台本地计算机上的多个应用程序并发访问轻量级/(嵌入式?)SQL 数据库?

php - SQL 错误:mysqli_stmt::bind_param():类型定义字符串中的元素数量与绑定(bind)变量的数量不匹配

mysql - 如何更新给定选择条件返回真值的位置?

sql - 如何将 Excel 单元格值设置为 Access Query 的条件?

database - 将完整的 RecordSet 插入到其他数据库 MS Access 中的另一个表中