C# 插入具有主详细信息 ID 的详细信息表

Posted

技术标签:

【中文标题】C# 插入具有主详细信息 ID 的详细信息表【英文标题】:C# insert into details table with master details id 【发布时间】:2017-02-02 07:23:24 【问题描述】:

我是 C# 的新手,我已经搜索了所有内容,但没有找到问题的答案。

在我的应用程序中,我有一个表格,例如 (employee details),第二个表格是 leaves

我想要的是将employee details 表的主键链接到leaves 表。

员工可以有很多叶子

因此,当我为employee 插入leaves 记录时,它应该使用employee details 表ID 存储,当我在leaves 表单中搜索emid 时,它会在datagridview 中显示他的所有leaves

员工详细信息表格

emid
empno
emname
emjoindate
emmobile
emaddress

离开表格

leaveid
emid
leavestartdate
leaveenddate

private void Save()
        
                con = new SqlConnection(cs.DBConn);
                con.Open();
                string cb = "insert into leaves(leavestartdate,leaveenddate,notes) VALUES (@d1,@d2,@d3)";


                cmd = new SqlCommand(cb);

                cmd.Connection = con;

                cmd.Parameters.Add(new SqlParameter("@d1", SqlDbType.Date, 31, "leavestartdate"));
                cmd.Parameters.Add(new SqlParameter("@d2", SqlDbType.Date, 31, "leaveenddate"));
                cmd.Parameters.Add(new SqlParameter("@d3", SqlDbType.NVarChar, 500, "notes"));

                cmd.Parameters["@d1"].Value = txtstartdate.Text.Trim();
                cmd.Parameters["@d2"].Value = txtenddate.Text.Trim();
                cmd.Parameters["@d3"].Value = txtnotes.Text.Trim();
                con.Close();


            
            catch (Exception ex)
            
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            

        

【问题讨论】:

How do I create a foreign key in SQL Server?的可能重复 它只是你需要的外键。 在插入新的休假记录时需要使用员工记录id。因此,在您的代码中,您需要为 emid 字段再添加一个参数并将其设置为 emplayee.emid 值 您能否编辑我的代码以使其更易于理解 【参考方案1】:

insert query.需要添加emid参数

string cb = "insert into leaves(emid,leavestartdate,leaveenddate,notes) VALUES (@emid,@d1,@d2,@d3)";

然后设置参数@emid的值

然后您可以像这样选择任何emid 中的leaves

string cb = "select * from leaves where emid = @emid";

编辑:要从employee details 表中获取emnameemmobile,您可以使用此查询

SELECT L.*, ED.emname , EM.emmobile 
FROM leaves L INNER JOIN
employee_details ED ON L.emid = ED.emid
WHERE L.emid = @emid

【讨论】:

如何在搜索的 datagridview 中获取员工休假记录 如果我从叶子中搜索 emid 是否可以将员工姓名和手机号码从员工详细信息表中显示到文本框中? 在两张表中都插入emid后,您将拥有连接记录的密钥。我会编辑我的帖子,这样你就可以得到详细的数据【参考方案2】:

您是否尝试过使用选择查询。因为从选择查询中我们也可以做到这一点。

【讨论】:

我无法理解如何使用两个表插入数据

以上是关于C# 插入具有主详细信息 ID 的详细信息表的主要内容,如果未能解决你的问题,请参考以下文章

动态插入语句需要返回插入的ID

PL/SQL 块以显示表详细信息

具有不同 http 请求的存档主详细信息概念

C# 使用 SqlDataReader 从 SQL Server 检索数据到主详细信息列表

UISplitViewController - 从详细信息更新主表视图

在表中插入主键的问题