2013-04-17 61 views
0

我有一些sqldatasource問題。我想在數據庫表中插入3個值,然後得到自動遞增的ID。我已經閱讀了關於scope_identity的所有內容,但是我在正確構造所有內容時遇到了困難。我們支付開發人員來構建我們的網站,但是我已經接管了編程,因此我正在使用現有代碼並嘗試修改。VB.NET sqlatasource檢索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> 

一切正常,如果我刪除「SELECT SCOPE_IDENTITY()AS @ insertCommand的newID「部分。我只是不確定如何將其與其餘部分整合在一起。我猜它與雙「select」語句有關。不過,我不明白「SELECT?url,?likes,?mlsid」語句是如何工作的。我查看過的其他地方已經是「VALUES @ url,@ likes,@ mlsid」,但這不起作用。任何援助在這裏將不勝感激。

謝謝, 賈裏德

+0

我可以將輸出參數作爲上面的sqlvoted.InsertParameters.Add語句的一部分與其餘參數一起添加嗎?如果是這樣,我的命令應該是什麼樣子? –

回答

0

暗淡str作爲字符串= 「INSERT INTO網址(URL,喜歡,mlsid)VALUES(」「 & URL & 」 ''「 & firstlike.ToString & 」 ''「 & newmlsid &「'); SELECT SCOPE_IDENTITY()as newID」

並將str分配給InsertCommand。 sqlvoted.InsertCommand = str sqlvoted.Insert()

+0

太棒了,看起來就像那個一樣。謝謝!!現在我需要獲取返回的newID值。我想我知道如何...如果不是,我會回來。再次感謝。 –

+0

@JaredVenema如果問題已解決,您可以將其標記爲答案。乾杯:) – Sweety