Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用c#和winforms在标签中显示上次保存的用户ID和名称_C#_Sql Server - Fatal编程技术网

使用c#和winforms在标签中显示上次保存的用户ID和名称

使用c#和winforms在标签中显示上次保存的用户ID和名称,c#,sql-server,C#,Sql Server,我有一个用C#编写的windows窗体应用程序,我在其中将姓名、ID等详细信息保存到数据库中。ID由数据库提供,因此用户不提供任何ID。我想添加另一项功能,在保存名称和ID后,我会自动从数据库中获取最近保存的名称和ID,并将其显示在同一表单上的标签1和标签2。我是C#的新手,非常感谢您的帮助 这是保存的代码 private void btnregister_Click(object sender, EventArgs e) { try { cn.Open(); cmd

我有一个用C#编写的windows窗体应用程序,我在其中将姓名、
ID
等详细信息保存到数据库中。
ID
由数据库提供,因此用户不提供任何
ID
。我想添加另一项功能,在保存名称和
ID
后,我会自动从数据库中获取最近保存的名称和
ID
,并将其显示在同一表单上的
标签1
标签2
。我是C#的新手,非常感谢您的帮助

这是保存的代码

private void btnregister_Click(object sender, EventArgs e)
{
  try
  {
    cn.Open();

    cmd = new SqlCommand(
      "INSERT INTO register (FirstName, LastName) VALUES(@FirstName, @LastName)", cn);
    cmd.Parameters.AddWithValue("@FirstName", txtfname.Text);
    cmd.Parameters.AddWithValue("@LastName", txtlname.Text);
    cmd.ExecuteNonQuery();

    MessageBox.Show("saved");
    cn.Close();
  }
  catch (Exception)
  {
    MessageBox.Show("Cannot Save");
  }
}

假设您的ID字段在表中被命名为
ID
,请对此修改您的查询:

INSERT INTO register (FirstName, LastName)
output inserted.Id 
VALUES(@FirstName, @LastName)
output inserted.Id
是您要查找的查询部分。 然后使用
cmd.ExecuteScalar()
捕获Id值:注意,如果没有生成Id,它将返回null

您的最终代码是:

private void btnregister_Click(object sender, EventArgs e)
{
    var insertedId = 0;
    try
    {
        cn.Open();

        cmd = new SqlCommand(
            "INSERT INTO register (FirstName, LastName) output inserted.Id VALUES(@FirstName, @LastName)", cn);
        cmd.Parameters.AddWithValue("@FirstName", txtfname.Text);
        cmd.Parameters.AddWithValue("@LastName", txtlname.Text);
        var result = cmd.ExecuteScalar();
        try
        {
            insertedId = (int) result;
        }
        catch
        {
            throw new Exception("No rows were added");
        }
        MessageBox.Show("saved");
        cn.Close();
    }
    catch (Exception)
    {
        MessageBox.Show("Cannot Save");
    }
}

创建一个存储过程。处理返回值或输出参数。旁注:使用将
cn
cmd
放入
。如果抛出异常,您将获得一个未经配置的资源,您已经知道上次保存的名称。你有来自不同用户的并发插入吗?@Steve没有。这是一个桌面应用程序,一个独立的桌面应用程序。然后你的文本框已经有了关于名字和姓氏的信息。您正在搜索不同的内容吗?这(虽然正确)并不能解决从不同用户处多次插入时检索插入的姓氏的问题。@k1dev我如何将其放入实际代码中。我一直在做错误的事情,检查answer@Steve我不认为他要求在多用户应用程序中实现解决方案。如果他是,我将提供另一个解决方案。