在c#中的Mysql - >查找名称所在的ID

时间:2016-08-10 15:07:00

标签: c# mysql

我在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;
                });
        }

2 个答案:

答案 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