0

我将如何创建一个返回数据库中的列的查询?SQL select 语句很简单。我在 VB 方面遇到问题。

SELECT UserNO 
FROM UserTable 
WHERE UserID = user;

然后我需要获取该 UserNO 并将其传递给另一个 T-SQL 存储过程。我将如何运行 SELECT 查询并在 Visual Basic 中返回结果?

附上我的一些代码。下面的代码将用户添加到数据库中,但是 SQL Server 会自动生成 UserNo (INTEGER),因为 INSERT 语句在插入存储过程中运行,因此我需要在创建用户后提取 UserNO。

Public conwd As SqlConnection = New SqlConnection("Server=*****;Database=*****;User Id=****;Password=****")
Public conwp As SqlConnection = New SqlConnection("Server=*****;Database=*****;User Id=****;Password=****")

Dim cmdP As SqlCommand = New SqlCommand("EXECUTE [dbo].[AddNewUserWestonTemp] '" + user + "'", conwp)
Dim cmdD As SqlCommand = New SqlCommand("EXECUTE [dbo].[AddNewUserWestonTemp] '" + user + "'", conwd)

conmp.Open()
conmd.Open()

cmdP.ExecuteNonQuery()
cmdD.ExecuteNonQuery()
4

2 回答 2

0
Dim cmdP As SqlCommand = New SqlCommand("EXECUTE [dbo].[AddNewUserWestonTemp] '" + user + "'" + "; SELECT CAST(scope_identity() AS int", conwp)

Dim userNo as Integer = cmdP.ExecuteScalar()

ExecuteScalar 检索结果的第一行

于 2019-11-19T08:53:40.290 回答
0

Using..End Using 块关闭并处理可能包含非托管代码的数据对象。参数有助于防止 SQL 注入。

Private Sub OPCode2()
    Dim newID As Integer
    Dim sql = "Insert Into UserTable (User) Values (@User); Select SCOPE_IDENTITY();"
    Using cn As New SqlConnection("Your Connection String")
        Using cmd As New SqlCommand(sql, cn)
            cmd.Parameters.Add("@User", SqlDbType.NVarChar).Value = "Brian Weaver"
            cn.Open()
            newID = CInt(cmd.ExecuteScalar)
        End Using
    End Using
    'Use the newID in your next command
    UserStoredProcedure(newID)
End Sub

Private Sub UseStoredProcedure(id As Integer)
    Dim sql = "InsertSomeUserInfo" 'the name of your stored procedure
    Using cn As New SqlConnection("Your Connection String")
        Using cmd As New SqlCommand(sql, cn)
            cmd.CommandType = CommandType.StoredProcedure
            'whatever parameter names and types your stored procedure uses
            cmd.Parameters.Add("@UserID", SqlDbType.Int).Value = id
            cmd.Parameters.Add("@Salary", SqlDbType.Decimal).Value = 50000
            cn.Open()
            cmd.ExecuteNonQuery()
        End Using
    End Using
End Sub
于 2018-12-01T03:18:57.363 回答