我在mysql中有一个名为Users的表,有4行。身份证,姓名,通行证,公司。
我尝试在c#WPF中创建一个执行此操作的应用程序:添加用户并提供您必须提供的值,并且您还必须向公司提供他所属的值。
现在,我需要做的是找到一种方法来提供公司名称并说:公司的名称是谷歌,在现场公司的用户中放置id 1
ID Name
1 Google
2 Facebook
3 Instagram
4 etc_etc
代码是:
public bool AddUser(string userid, string username, string password, int companyId)
{
return ExecQuery("insert into users (id, name, pass, companyid) values(@id, @name, @pass, @cid)",
cmd =>
{
cmd.Parameters.AddWithValue("@id", userid);
cmd.Parameters.AddWithValue("@name", username);
cmd.Parameters.AddWithValue("@pass", password);
cmd.Parameters.AddWithValue("@cid", companyId);
return cmd;
});
}
public bool AddCompany(string name)
{
return ExecQuery("insert into companies (name) values(@name)",
cmd =>
{
cmd.Parameters.AddWithValue("@name", name);
return cmd;
});
}
答案 0 :(得分:1)
假设公司名称是唯一的&已从表中的值中选择,您可以更改查询以包含子查询以获取公司ID。
"insert into users (id, name, pass, companyid)
values(@id, @name, @pass, (select id from company where Name=@cid))"
如果公司名称不唯一,则在返回多个值时此查询将失败。
如果找不到公司名称,如果companyid字段设置为NOT NULL,则查询将失败,否则将输入null。
答案 1 :(得分:1)
您可以通过预先开发的MySQL命令LAST_INSERT_ID()
你可以在SP中获得这样的最后一个插入ID:
DECLARE LID int;
SET LID = LAST_INSERT_ID();
参考:Here