行いたいことは、TextBoxに名前を入力し検索ボタンを押すと、SQLserverにある情報をDataGridViewに表示するということです。表示するためにListを作成し、Listに格納した後そのListから登録情報を引っ張ってくることを行いたいです。
であれば「listの中にlistを作る」というのは完全に見当違いです。
先輩の意図するところは何か別にあって、その意図を実現するためにそう言っているのかもしれませんが、単純にその言葉の表面だけを見ると「何言ってるのセンパイ?」って感じです。
List<T> 型を使いましょう。以下のような感じでList<T> 型のオブジェクトを作ってください。Order クラスが T に該当します。それを DataGridView にバインドすればいいです。
// SQL Server の Northwind サンプルデータベース Orders
// テーブルのレコードを格納するクラス定義
public class Order
{
public int OrderID { get; set; }
public string CustomerID { get; set; }
public int? EmployeeID { get; set; }
public DateTime? OrderDate { get; set; }
public DateTime? RequiredDate { get; set; }
public DateTime? ShippedDate { get; set; }
public int? ShipVia { get; set; }
public decimal? Freight { get; set; }
public string ShipName { get; set; }
public string ShipAddress { get; set; }
public string ShipCity { get; set; }
public string ShipRegion { get; set; }
public string ShipPostalCode { get; set; }
public string ShipCountry { get; set; }
}
// SQL Server のサンプルデータベース Northwind の
// Orders テーブルからデータを取得して List<Order>
// オブジェクトを生成。Entity Framework を使う方が簡単
// だが、ここではプリミティブに ADO.NET の SqlDataReader
// を使用した。
protected List<Order> CreateOrderList()
{
List<Order> orders = new List<Order>();
string connString = WebConfigurationManager.
ConnectionStrings["NORTHWINDConnectionString"].
ConnectionString;
string query = "SELECT [OrderID], [CustomerID]," +
"[EmployeeID], [OrderDate], [RequiredDate]," +
"[ShippedDate], [ShipVia], [Freight]," +
"[ShipName], [ShipAddress], [ShipCity]," +
"[ShipRegion], [ShipPostalCode], [shipCountry]" +
"FROM [Orders]";
using (SqlConnection conn = new SqlConnection(connString))
{
conn.Open();
using (SqlCommand cmd = new SqlCommand(query, conn))
{
using (SqlDataReader reader = cmd.ExecuteReader())
{
if (reader != null)
{
while (reader.Read())
{
Order record = new Order();
record.OrderID = reader.GetInt32(0);
record.CustomerID = reader.IsDBNull(1) ?
null : reader.GetString(1);
record.EmployeeID = reader.IsDBNull(2) ?
null : (int?)reader.GetInt32(2);
record.OrderDate = reader.IsDBNull(3) ?
null : (DateTime?)reader.GetDateTime(3);
record.RequiredDate = reader.IsDBNull(4) ?
null : (DateTime?)reader.GetDateTime(4);
record.ShippedDate = reader.IsDBNull(5) ?
null : (DateTime?)reader.GetDateTime(5);
record.ShipVia = reader.IsDBNull(6) ?
null : (int?)reader.GetInt32(6);
record.Freight = reader.IsDBNull(7) ?
null : (decimal?)reader.GetDecimal(7);
record.ShipName = reader.IsDBNull(8) ?
null : reader.GetString(8);
record.ShipAddress = reader.IsDBNull(9) ?
null : reader.GetString(9);
record.ShipCity = reader.IsDBNull(10) ?
null : reader.GetString(10);
record.ShipRegion = reader.IsDBNull(11) ?
null : reader.GetString(11);
record.ShipPostalCode = reader.IsDBNull(12) ?
null : reader.GetString(12);
record.ShipCountry = reader.IsDBNull(13) ?
null : reader.GetString(13);
orders.Add(record);
}
}
}
}
}
return orders;
}
それより、SQL Server の特定のテーブルのレコード一覧を DataGridView に表示するという目的には、Visual Studio のデータソース構成ウィザードを使って型付 DataSet / DataTable + TableAdapter を作り、それを BindingSource 経由で DataGridView にバインドするのが定番の方法です。
以下のチュートリアル、
チュートリアル : データベースへのデータの保存 (単一テーブル)
https://msdn.microsoft.com/ja-jp/library/0f92s97z(v=vs.120).aspx
10 行でズバリ !! 非接続型のデータ アクセス (ADO.NET) (C#)
https://code.msdn.microsoft.com/windowsdesktop/10-ADONET-C-cbfe7688
・・・のように Visual Studio のデータソース構成ウィザードを利用してアプリを作ると、以下のページの図のような構造のアプリが、ほとんど自分でコードを書くこと無しに作れます。
Windows フォーム アプリケーションでのデータへの接続
https://msdn.microsoft.com/ja-jp/library/wxt2cwcc(v=vs.120).aspx
操作に慣れると 10 分もかからず作れるはずです。
TextBoxに名前を入力し検索ボタンを押すと
というところは上記チュートリアルをベースに少し手を加えれば簡単にできます。