代码之家  ›  专栏  ›  技术社区  ›  Jared Venema

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

  •  0
  • Jared Venema  · 技术社区  · 12 年前

    我遇到了一些sqldatasource问题。我想在DB表中插入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,?likes,?mlsid”语句是如何工作的。在我看到的其他地方,命令的一部分都是“VALUES@url,@likes,@mlsid”,但这不起作用。如有任何协助,我们将不胜感激。

    谢谢 刺耳的

    1 回复  |  直到 12 年前
        1
  •  0
  •   Sweety    12 年前

    dim str as string=“插入url(url,likes,mlsid)值('”&url&“','”&aamp;firstlike.ToString&”','“&newmlsid&”');选择SCOPE_IDENITY()作为newID”

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