当前位置: 首页 > 面试题库 >

从TableAdapter获取@@ IDENTITY

孙钱青
2023-03-14
问题内容

我正在尝试完成一项看似简单的任务,但该任务已经变成了数小时的冒险:@@Identity从入门TableAdapter.Insert()

这是我的代码:

protected void submitBtn_Click(object sender, EventArgs e)
{
    AssetsDataSetTableAdapters.SitesTableAdapter sta = new AssetsDataSetTableAdapters.SitesTableAdapter();
    int insertedID = sta.Insert(siteTxt.Text,descTxt.Text);

    AssetsDataSetTableAdapters.NotesTableAdapter nta = new AssetsDataSetTableAdapters.NotesTableAdapter();
    nta.Insert(notesTxt.Text, insertedID, null,null,null,null,null,null);
    Response.Redirect("~/Default.aspx");
}

一个 答案 表明,我可能要做的就是更改ExecuteMode。我试过了
这使GetData()退出工作(因为我现在返回的是标量而不是rowdata)(我需要保留GetData())。它还不能解决该问题,因为insertID变量仍设置为1。

我试图创建第二个TableAdapterTypedDataSet.XSD和设置属性为适配器“标”,但它仍然无法与变量中获得的值为1。

生成的插入命令是

INSERT INTO [dbo].[Sites] ([Name], [Description]) VALUES (@Name, @Description);
SELECT Id, Name, Description FROM Sites WHERE (Id = SCOPE_IDENTITY())

并且还设置了“刷新数据表”(在Insert和Update语句之后添加一个select语句以检索标识)。

环境

SQL Server 2008 R2,Visual Studio 2010,.NET 4,Windows XP,所有本地同一台计算机。

是什么原因造成的?

编辑/更新

我想澄清一下,我在Visual Studio中使用自动生成的代码。我不知道生成代码的“工具”是什么,但是如果双击* .XSD文件,它将显示SQL Table
Schema和关联的TableAdapter的UI。我想继续使用自动生成的代码,并以某种方式启用获取身份。我不想用存储过程来手工编写所有内容。


问题答案:

这是我的SQL代码

CREATE PROCEDURE [dbo].[Branch_Insert]
(
    @UserId uniqueidentifier,
    @OrganisationId int,
    @InsertedID int OUTPUT
)
AS
    SET NOCOUNT OFF;
INSERT INTO [Branch] ([UserId], [OrganisationId]) 
VALUES (@UserId, @OrganisationId);

SELECT Id, UserId, OrganisationId FROM Branch WHERE (Id = SCOPE_IDENTITY())
SELECT @InsertedID = SCOPE_IDENTITY()

然后,当我创建表适配器时-我可以立即看到@InsertedID参数。

然后从代码开始,我要做的就是:

int? insertedId = 0;
branchTA.Insert(userId, orgId, ref insertedId);

我不是100%是否使用ref是最好的选择,但这对我有用。

祝你好运。



 类似资料:
  • 问题内容: 我有一个查询,希望通过ASP.NET TableAdapter运行,该查询包含一个’IN’子句,该子句通过参数来接收它的值。 我的问题是,如何指定此参数?我想到了这样写条件语句: 其中@ParamList是参数的字符串,例如“ 4,12,45,23”,但是由于指定的id是Integer,因此它抱怨无法将String转换为Integer。这很有意义,但是有什么方法可以在ASP.NET T

  • 问题内容: 我正在编写一个JSP / Servlet,并且试图获取URI的锚点部分,例如: 如何从我的请求中获得分数?显然行不通吗? 任何帮助都将受到欢迎。 问题答案: 这是不可能的,因为客户端不会将“锚定部分”发送到服务器 例如,这是Chrome提交后生成的确切请求(使用Wireshark记录): 看,没有#foobar。因此,服务器应用程序无法读取它。 您可以做一些JavaScript魔术,将

  • 问题内容: 我正在编写一个JSP / Servlet,并且尝试获取URI的锚点部分,例如: 如何从我的请求中获得分数?显然行不通吗? 任何帮助都将受到欢迎。 问题答案: 这是不可能的,因为客户端不会将“锚定部分”发送到服务器 例如,这是Chrome提交后生成的确切请求(使用Wireshark记录): 看,没有#foobar。因此,服务器应用程序无法读取它。 您可以做一些JavaScript魔术,将

  • 问题内容: 我可以从org.w3c.dom.Node获取完整的xpath吗? 说当前节点指向xml文档中间的某个位置。我想提取该元素的xpath。 我正在寻找的输出xpath是。节点xpath的父级。只需忽略具有表达式并指向同一节点的xpath。 问题答案: 没有获取XPath的通用方法,主要是因为没有一个通用XPath可以标识文档中的特定节点。在某些架构中,节点将由属性唯一标识(并且可能是最常见

  • 问题内容: HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(“http://my.server:8080/android/service.php"); 生成一个json字符串。我该如何从我的手机上获取?顺便说一句; 我已经将该库排除在外了,我可以在其中使用任何方法吗? 有更好的方法,

  • 问题内容: 我正在解决有关作为服务器响应的JSONObject的问题。 正如您在响应中看到的那样,我正在解析JSONObject并创建syncresponse,synckey作为 JSON对象 createdtrs,modtrs,deletedtrs作为 JSONArray 。我想从Deletedtrs访问JSONObject,以便可以将它们分开并使用这些值。即我想提取公司编号,用户名,日期等。