数据读取器格式输出

时间:2010-06-15 12:32:54

标签: sql vb.net

我正在使用以下函数生成连接到所选数据库的用户列表。如何将此更改为单行以获得多个相同的结果? 例如:“sa(3) - MYCOMPUTER”而不是三次列出“sa - MYCOMPUTER”?

Function ConnectedUsers(ByVal SelectedDatabase As String, ByVal SelectedInstance As String)
    Dim myCommand As SqlCommand
    Dim dr As SqlDataReader
    Dim mystring As String = String.Empty
    Try
        Dim myConn As New SqlConnection(ConnectionString)
        myConn.Open()
        myCommand = New SqlCommand("select loginame,hostname from sysprocesses where db_name(dbid) = '" & SelectedDatabase & ";", myConn)
        dr = myCommand.ExecuteReader()
        While dr.Read()
                        mystring += GetFullName(dr(0).ToString().Trim()) & " - " & dr(1).Trim() & vbCrLf
        End While
        dr.Close()
        myConn.Close()
    Catch e As Exception
        MessageBox.Show(e.Message)
    End Try
    Return mystring
End Function

感谢。

1 个答案:

答案 0 :(得分:0)

SQL命令应该是

select loginame, count(*) as Nbr, hostname from sysprocesses where db_name(dbid) = '" & SelectedDatabase & "' group by loginame;"

并且您应该更改显示以显示计数(在此示例中为Nbr),如:

mystring += GetFullName(dr(0).ToString().Trim()) & "(" & dr(1).Trim() & ") - " & dr(2).Trim() & vbCrLf