使用c#和winforms在标签中显示上次保存的用户ID和名称
我有一个用C#编写的windows窗体应用程序,我在其中将姓名、使用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
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我不认为他要求在多用户应用程序中实现解决方案。如果他是,我将提供另一个解决方案。