VB.NET sqlatasource使用scope_identity()检索id

时间:2013-04-17 02:33:22

标签: sqldatasource

我有一些sqldatasource问题。我想在数据库表中插入3个值,然后获取自动递增的ID。我已经阅读了有关scope_identity的所有内容,但我无法正确构建所有内容。我们支付开发人员来构建我们的网站,但我接管了编程,因此我正在使用现有代码并尝试修改。

以下是用户点击时子程序中的内容:

dim firstlike As Integer = 1
likeslbl.Text = firstlike
sqlvoted.InsertParameters.Clear()
sqlvoted.InsertCommand = "INSERT INTO urls (url,likes,mlsid) SELECT ?url,?likes,?mlsid; SELECT SCOPE_IDENTITY() AS @newID"
sqlvoted.InsertParameters.Add("url", System.Data.DbType.String, url)
sqlvoted.InsertParameters.Add("likes", System.Data.DbType.String, firstlike.ToString)
sqlvoted.InsertParameters.Add("mlsid", System.Data.DbType.String, newmlsid)
sqlvoted.Insert()   

这是我的sqldatasource:

<asp:SqlDataSource id="sqlvoted" runat="server" ConnectionString="<%$ConnectionStrings:Mym6pConnection %>"
ProviderName="MySql.Data.MySqlClient">
<SelectParameters>
<asp:Parameter Direction="Output" Name="newID" Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>

如果我删除insertCommand的“SELECT SCOPE_IDENTITY()AS @newID”部分,那么一切正常。我只是不确定如何将其与其余部分集成。我猜它与双“select”语句有关。我不明白“SELECT?url,?like,?mlsid”语句是如何工作的。在其他地方,我看到命令的一部分是“VALUES @ url,@ likes,@ mlsid”,但这不起作用。这里的任何帮助将不胜感激。

谢谢, 贾里德

1 个答案:

答案 0 :(得分:0)

dim str as string =&#34; INSERT INTO urls(url,likes,mlsid)VALUES(&#39;&#34;&amp; url&amp;&#34;&#39;,&#39; &#34;&amp; firstlike.ToString&amp;&#34;&#39;&#39;&#34;&amp; newmlsid&amp;&#34;&#39;); SELECT SCOPE_IDENTITY()AS newID&# 34;

将str分配给InsertCommand。  sqlvoted.InsertCommand = str  sqlvoted.Insert()