Select @NewID

jiayun1 2010-04-01 05:38:37
<asp:SqlDataSource id=""runat="server"
ConnectionString="<>"
InsertCommand="INSERT INTO [表] ([字段]) VALUES 【字段】);Select @NewID=Scope_Identity();
">

主要问这个 InsertCommand分号后面Select @NewID=Scope_Identity();
写这个是要干嘛?
但是为什么执行不出来?是连着的吗?还是这么写本身是有错的?
这是别人的代码实在没看明白。请高手指教。
...全文
287 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
男姑娘 2012-06-27
  • 打赏
  • 举报
回复
无可奈何花落去。。。。
jiayun1 2010-04-06
  • 打赏
  • 举报
回复
解决了。是参数问题。其他都 没问题。 哎。折腾了整整两天。
阿非 2010-04-02
  • 打赏
  • 举报
回复
。。。

for (int i = 0; i < e.Command.Parameters.Count; i++)
{

Response.Write(e.Command.Parameters[i].Value + "<br />");
}

=>

Response.Write(e.Command.Parameters["@NewID"].Value + "<br />");
jiayun1 2010-04-02
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 sandy945 的回复:]
引用 9 楼 sandy945 的回复:

http://blog.csdn.net/Sandy945/archive/2010/04/01/5442624.aspx


这个你看了么
[/Quote]

看了啊 人家得到的是id 我得到咋是最后输入的字段文字 而不是对应的id呢
jiayun1 2010-04-02
  • 打赏
  • 举报
回复
哦 贴错了。 <asp:Parameter Name="NewID" Direction="Output" Size="4"/>
阿非 2010-04-02
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 sandy945 的回复:]

http://blog.csdn.net/Sandy945/archive/2010/04/01/5442624.aspx
[/Quote]

这个你看了么
阿非 2010-04-02
  • 打赏
  • 举报
回复
<asp:Parameter Name="NewID"/>


=》

<asp:Parameter Name="NewID" Direction="Output" />


jiayun1 2010-04-02
  • 打赏
  • 举报
回复
我尽管循环了。但是最后始终输出的是,最后一次插入的文字
而不是最后一次的id。
这个很奇怪啊。
jiayun1 2010-04-02
  • 打赏
  • 举报
回复
 <asp:FormView ID="FormView1" runat="server" DataKeyNames="id" 
DataSourceID="SqlDataSource1">
<EditItemTemplate>
id:
<asp:Label ID="idLabel1" runat="server" Text='<%# Eval("id") %>' />
<br />
name:
<asp:TextBox ID="nameTextBox" runat="server" Text='<%# Bind("name") %>' />
<br />
<asp:LinkButton ID="UpdateButton" runat="server" CausesValidation="True"
CommandName="Update" Text="更新" />
 <asp:LinkButton ID="UpdateCancelButton" runat="server"
CausesValidation="False" CommandName="Cancel" Text="取消" />
</EditItemTemplate>
<InsertItemTemplate>
name:
<asp:TextBox ID="nameTextBox" runat="server" Text='<%# Bind("name") %>' />
<br />
<asp:LinkButton ID="InsertButton" runat="server" CausesValidation="True"
CommandName="Insert" Text="插入" />
 <asp:LinkButton ID="InsertCancelButton" runat="server"
CausesValidation="False" CommandName="Cancel" Text="取消" />
</InsertItemTemplate>
<ItemTemplate>
id:
<asp:Label ID="idLabel" runat="server" Text='<%# Eval("id") %>' />
<br />
name:
<asp:Label ID="nameLabel" runat="server" Text='<%# Bind("name") %>' />
<br />
<asp:LinkButton ID="NewButton" runat="server" CausesValidation="False"
CommandName="New" Text="新建" />
</ItemTemplate>
</asp:FormView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:CLIMS_CRMConnectionString1 %>"
InsertCommand="INSERT INTO test(name) VALUES (@name);Select @NewID=Scope_Identity();"
SelectCommand="select * from test" oninserted="SqlDataSource1_Inserted">
<InsertParameters>
<asp:Parameter Name="name" />
<asp:Parameter Name="NewID"/>
</InsertParameters>
</asp:SqlDataSource>

 protected void SqlDataSource1_Inserted(object sender, SqlDataSourceStatusEventArgs e)
{
for (int i = 0; i < e.Command.Parameters.Count; i++)
{

Response.Write(e.Command.Parameters[i].Value + "<br />");
}
}
阿非 2010-04-02
  • 打赏
  • 举报
回复
我真无奈了
jiayun1 2010-04-02
  • 打赏
  • 举报
回复
哎 人家代码写的没有问题。
还是bit的问题。
Boolean。这个插入的时候总说有错误。
libinlink 2010-04-01
  • 打赏
  • 举报
回复


Select @NewID=Scope_Identity();

@NewID就是前边那句insert插入成功时,新增行的id
阿非 2010-04-01
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 lzsh0622 的回复:]
引用 9 楼 sandy945 的回复:
http://blog.csdn.net/Sandy945/archive/2010/04/01/5442624.aspx


阿非,我没看明白 Select @NewID=Scope_Identity();

这种用法:多一个赋值操作,有什么用途?
[/Quote]

6楼的说法是错误的,在 SqlDataSource 使用

Select Scope_Identity(); 是不能返回自增ID 的,需要借助参数返回

SQL77 2010-04-01
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 lzsh0622 的回复:]
引用 9 楼 sandy945 的回复:
http://blog.csdn.net/Sandy945/archive/2010/04/01/5442624.aspx


阿非,我没看明白 Select @NewID=Scope_Identity();

这种用法:多一个赋值操作,有什么用途?
[/Quote]
呵呵,以便后面其它地方利用,他这个猜应该是产生连续的ID号来的
SQL77 2010-04-01
  • 打赏
  • 举报
回复
<asp:SqlDataSource id=""runat="server"
ConnectionString="<>"
InsertCommand="
INSERT INTO [表] ([字段]) VALUES 【字段】);
Select @NewID=Scope_Identity();
">

这个其实没什么,其实只是两条语句而已

只是一个简单的插入语法,然后获取自增列最后返回的值,赋值给变量@NewID,

以便后面其他地方可以利用
lzsh0622 2010-04-01
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 sandy945 的回复:]
http://blog.csdn.net/Sandy945/archive/2010/04/01/5442624.aspx
[/Quote]

阿非,我没看明白 Select @NewID=Scope_Identity();

这种用法:多一个赋值操作,有什么用途?
lzsh0622 2010-04-01
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 criedshy 的回复:]
这句话意思是说,你刚插入一条,刚那条的主键赋给@NewID

你这样写当然是没反应了,前面一是一个insert 后面只是一个赋值,都是没有返回值的撒

InsertCommand= "INSERT INTO [表] ([字段]) VALUES 【字段】);Select Scope_Identity(); ";
[/Quote]

同意这种解释.
wuyq11 2010-04-01
  • 打赏
  • 举报
回复
SCOPE_IDENTITY()受作用域的限制,只返回当前作用域中的最后一个IDENTITY值
HooverHuang 2010-04-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sandy945 的回复:]

ID 是自增的,在增加记录后 返回新记录的ID
[/Quote]

在插入这条新纪录的同时返回这条数据的自增ID
加载更多回复(7)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧