2012-03-16 54 views
4

嘿所有我想找到的示例从没有参数发送到它的存储过程获取数据,也没有任何返回的输出参数。虽然它确实显示数据。ms sql存储过程返回的数据没有输出

我怎么能从我的代码即时通讯使用下面?

Dim myCommandSQL As New SqlCommand 
    Dim myReaderSQL As SqlDataReader = Nothing 
    Dim intX As Integer = 0 
    Dim connSql As SqlConnection 

    Try 
     connSql = New SqlConnection("Server=sqlprod;" & _ 
            "Database=ISS3_PROD;" & _ 
            "User ID=xxx;" & _ 
            "Password=xxx;" & _ 
            "Trusted_Connection=False;") 
     connSql.Open() 

     myCommandSQL.CommandType = CommandType.StoredProcedure 
     myCommandSQL.CommandText = "Select_Prod" 

     Dim sqlParReturn1 As System.Data.SqlClient.SqlParameter = myCommandSQL.Parameters.Add("@return_value", SqlDbType.VarChar) 

     sqlParReturn1.Direction = ParameterDirection.Output 
     myCommandSQL.ExecuteNonQuery() 

     MsgBox(sqlParReturn1) 

     connSql.Close() 
     myCommandSQL.Dispose() 

@return_value我只是放在那里看看会发生什么,但我什么也没有返回。

任何帮助将是伟大的!

大卫

回答

3

如果您分配一个参数到你的命令,那么你的存储过程应采取的参数。此外,如果您指定方向为Output,则应在存储过程中将该参数标记为OUTPUT

如果您只是想要不带任何参数的存储过程的结果,请删除所有包含sqlParReturn1的行。此外,您的命令不是“非查询” - 您查询数据。在使用ADO DataReader的读取数据

Using connSql As SqlConnection = New SqlConnection(...) 
    connSql.Open() 
    Using myCommandSQL As SqlCommand = connSql.CreateCommand() 
     myCommandSQL.CommandType = CommandType.StoredProcedure 
     myCommandSQL.CommandText = "Select_Prod" 
     Using reader As SqlDataReader = myCommandSQL.ExecuteReader() 
      If reader.HasRows Then 
       While reader.Read() 
        // loops through the rows returned 
       End While 
      End If 
     End Using 
    End Using 
End Using 
+0

谢谢!现在工作得很好。 – StealthRT 2012-03-16 03:35:27

2

这里是MSDN documentation:为了得到它,你应该这样做(我也使用一些更好的实践技术,重构你的代码)。我认为他们的例子很好地解释了这一点,所以我只是在这里复制并粘贴示例。只需替换你的SQL设置,然后你只需要调用ExecuteReader,然后在reader.Read找到行的同时运行while循环。在循环内部,您可以通过reader.Get...访问列,使用序号或列名。

Private Sub HasRows(ByVal connection As SqlConnection) 
    Using connection 
     Dim command As SqlCommand = New SqlCommand(_ 
      "SELECT CategoryID, CategoryName FROM Categories;", _ 
      connection) 
     connection.Open() 

     Dim reader As SqlDataReader = command.ExecuteReader() 

     If reader.HasRows Then 
      Do While reader.Read() 
       Console.WriteLine(reader.GetInt32(0) _ 
        & vbTab & reader.GetString(1)) 
      Loop 
     Else 
      Console.WriteLine("No rows found.") 
     End If 

     reader.Close() 
    End Using 
End Sub 
相关问题