Solution 1 is faulty. The loop logic doesn't work because on the last valid line, the string isn't empty so it loops again but then immediately empties the string making it fail at the latter split stage.
Also, he dims "i As Long" but doesn't use it.
Try this
Dim SR As StreamReader = New StreamReader("your csv file path")
Dim line As String = SR.ReadLine()
Dim strArray As String() = line.Split(","c)
Dim dt As DataTable = New DataTable()
Dim row As DataRow
For Each s As String In strArray
dt.Columns.Add(New DataColumn())
Next
Do
line = SR.ReadLine
If Not line = String.Empty Then
row = dt.NewRow()
row.ItemArray = line.Split(","c)
dt.Rows.Add(row)
Else
Exit Do
End If
Loop