我正在尝试完成一项看似简单的任务,但该任务已经变成了数小时的冒险:@@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。
我试图创建第二个TableAdapter
在TypedDataSet.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,以便可以将它们分开并使用这些值。即我想提取公司编号,用户名,日期等。