Hey, another way of doing this if you don't know the amount of columns in the table you are getting would be: Try While dtrReader.Read() Dim lvItem As New ListViewItem(dtrReader(0)) For i As Integer = 1 To dtrReader.FieldCount - 1 lvItem.SubItems.Add(dtrReader(i)) Next lstViewBuyers.Items.Add(lvItem) End While Finally dtrReader.Close() End Try Bsically the same thing, but since the data reader has field information on it, we just use that and create the sub items from the datareader starting at the 1 position. Have you thought of using a bindable list view? You may want to check to see if nulls are coming back though, you may get exceptions when you get data from a datareader that has null values and try to add it to a list view item like this.