如何从vb中的sql(企业管理器)中检索@variable?

时间:2011-07-04 05:51:17

标签: .net asp.net sql vb.net

我的sql语句添加了新员工的详细信息,返回@employeeID。我需要检索此@employeeID以显示newly added employeeviewprofile.asp.vb的详细信息。我如何编写VB来从SQL中检索@employeeID并在我的VB代码中包含@employeeID变量,以便显示我新添加的信息?

3 个答案:

答案 0 :(得分:0)

您需要使用方向输出

添加SqlParameter

http://support.microsoft.com/kb/306574

答案 1 :(得分:0)

在Sql Server查询中:

Select @employeeID = Ident_Current('employee table')

在代码隐藏中:

employeeID = SqlCmd.ExecuteScalar().ToString();

答案 2 :(得分:0)

<%@ Import Namespace =“System.Data”%> <%@ Import Namespace =“System.Data.SqlClient”%>

<html>
  <head><title>Using Stored Procedures With Output Parameters</title></head>
  <body>
    <form runat="server" method="post">
      Enter a State Code:
      <asp:Textbox id="txtRegion" runat="server" />
      <asp:Button id="btnSubmit" runat="server"
                  Text="Search" OnClick="Submit" />
      <br/><br/>
      <asp:label id="lblRecords" runat="server" />
      <br/><br/>
      <asp:DataGrid id="dgOutput" runat="server" />
    </form>
  </body>
</html>

<script language="VB" runat="server">
Sub Submit(Source As Object, E As EventArgs)

  Dim strConnection As String = ConfigurationSettings.AppSettings("NWind")
  Dim objConnection As New SqlConnection(strConnection)
  Dim objCommand As New SqlCommand("sp_CustomersByStateWithCount",objConnection)
  objCommand.CommandType = CommandType.StoredProcedure

  Dim objParameter As New SqlParameter("@region", SqlDbType.NVarChar, 15)
  objCommand.Parameters.Add(objParameter)
  objParameter.Direction = ParameterDirection.Input
  objParameter.Value = txtRegion.text

  Dim objOutputParameter As New SqlParameter("@matches", SqlDbType.Int)
  objCommand.Parameters.Add(objOutputParameter)
  objOutputParameter.Direction = ParameterDirection.Output

  objConnection.Open()

  Dim objDataReader As SqlDataReader
  objDataReader = objCommand.ExecuteReader()

  dgOutput.DataSource = objDataReader
  dgOutput.DataBind()

  objCommand.Connection.Close()
  objCommand.Connection.Open()
  objCommand.ExecuteNonQuery()
  lblRecords.Text = "Matches: " & CInt(objCommand.Parameters(1).Value)

  objConnection.close()
End Sub
</script>


---------------------------------------------------
Imports System
Imports System.Data
Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim cn As SqlConnection
        Dim sql As String
        Dim cmd As SqlCommand

        cn = New SqlConnection("Data Source=PEREGRINE;" & _
                               "Initial Catalog=Northwind;Integrated Security=SSPI")
        cn.Open()
        sql = "CREATE PROCEDURE sp_CustomersByStateWithCount @region nvarchar(15), @matches int OUTPUT AS " & _
              "SELECT CustomerID, CompanyName FROM Customers WHERE region = @region ORDER BY CompanyName " & _
              "SET @matches = @@rowcount"
        cmd = New SqlCommand(sql, cn)
        cmd.ExecuteNonQuery()
        Console.WriteLine("Procedure created!")
    End Sub
End Module