代码之家  ›  专栏  ›  技术社区  ›  madlan

数据读取器格式化输出

  •  0
  • madlan  · 技术社区  · 14 年前

    我正在使用以下函数生成连接到选定数据库的用户列表。对于多个相同的结果,如何将此更改为一行? 例如:“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 回复  |  直到 14 年前
        1
  •  0
  •   MJB    14 年前

    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