You can use a DataListView, inherited from ObjectListView
I have no SQL Server to test, but I did a test with an Access database
You can adapt it by changing the connexion string
// using System.Data.OleDb;
string sFile = "E:\\Employees.accdb";
string sSql = "SELECT FirstName, LastName, Location FROM employees";
//string sSql = "SELECT * FROM employees";
OleDbCommand myCommand = new OleDbCommand();
OleDbConnection myConnection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + sFile + ";Persist Security Info=False;Jet OLEDB:Database Password='toto';");
OleDbDataAdapter dataadapter = new OleDbDataAdapter(sSql, myConnection);
DataSet ds = new DataSet();
myConnection.Open();
dataadapter.Fill(ds, "employees_table");
myConnection.Close();
dataListView1.DataSource = ds;
dataListView1.DataMember = "employees_table";
dataListView1.AutoResizeColumns();
dataListView1.ShowGroups = false;