我在下面的图表中有两个表格,并且在表格上也有一些示例数据。我想在我的项目中实现的目标如下。我的项目中有4个Windows窗体。具有两个按钮的第一种形式New User的点击事件为-private void button1_Click(object sender, EventArgs e){ NewUser nu = new NewUser(); nu.Show();}单击后,将显示NewUser表单计划是在此处为Users Table添加数据,然后单击Save and Proceed(现在我正在使用导航栏上的默认Save按钮),这将从UID中获取Users Table并将其添加到(这是UID中的外键)并打开表格Address Table,在其中可以输入表格的数据。FormAddress的点击事件为-private void button1_Click(object sender, EventArgs e){ FormAddress ad = new FormAddress(); ad.Show(); getdata();}通过研究,我了解到我需要使用Save and Proceed从上次数据插入中获取SCOPE_IDENTITY的值并将其传递到下一个表单。因此,我如下创建了方法UID并将其添加到按钮事件getdata()下我试过的代码是private void getdata(){ SqlConnection sqlConnection1 = new SqlConnection(@"mycon string is here;" + "Initial Catalog=Stack;Integrated Security=YES"); SqlCommand cmd = new SqlCommand(); SqlDataReader reader; cmd.CommandText = "SELECT * FROM Users"; cmd.CommandType = CommandType.Text; cmd.Connection = sqlConnection1; sqlConnection1.Open(); reader = cmd.ExecuteReader(); // Data is accessible through the DataReader object here. cmd.CommandText = "SCOPE_IDENTITY();"; sqlConnection1.Close();}我只是无法投入工作并弄清楚如何获取Save and Proceed并使其生效。在我被否决之前,请问我。我会回复并根据需要进行回复/进行更改。如果有人要下载它们以运行和测试,我已经压缩了项目和SQL Server文件HERE。我使用了SQL Server 2014和Visual Studio 2013。 最佳答案 如果您还没有在该连接上执行INSERT,则SCOPE_IDENTITY()是未定义的。您无法预先显示新的IDENTITY值,因为大多数数据库是多用户的-因此,只有在实际执行INSERT之前,才能知道该值。显示“可能会是这个”值会产生误导-例如,用户可能会记下该值或将其用于与某人的通信中。您只能在数据库中存在该值后才显示它。但是:当您输入INSERT时,您可以立即简单地查询SCOPE_IDENTITY()以查看该值是什么。最近,you can use the OUTPUT clause of an INSERT operation-更简单,只有一组SQL操作,并且可用于多行:全部获胜。关于c# - 使用SQL命令从数据库读取最后插入的UID,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27487930/
10-11 02:43
查看更多