1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
public void Test03()
{
SqlConnection connection = new SqlConnection();
SqlCommand command = new SqlCommand();
DataTable dt = new DataTable();
// 接続します。
connection.ConnectionString = @"Data Source=PC\SQLEXPRESS1;Initial Catalog=TestDatabase;User Id=sa;Password=sa;";
connection.Open();
// SELECT文を設定します。
command.CommandText = "SELECT * FROM m_syouhin";
command.Connection = connection;
// SQLを実行します。
SqlDataReader reader = command.ExecuteReader();
// 型付テーブルを作成します。
dt = CreateSchemaDataTable(reader);
DataRow row = dt.NewRow();
// 結果を表示します。
while (reader.Read())
{
for (int i = 0; i < reader.FieldCount; i++)
{
row[i] = reader.GetValue(i);
}
Console.WriteLine("ID:" + row[0] + " 名称:" + row[1] + " 価格:" + row[2]);
}
// 接続を解除します。
connection.Close();
}
/// <summary>
/// SqlDataReaderで取得した構造を元にDataTableを作成します。
/// </summary>
/// <param name="reader">SqlDataReaderオブジェクト</param>
/// <returns>DataTableオブジェクト</returns>
/// <remarks>
/// 参考:
/// http://msdn.microsoft.com/ja-jp/library/system.data.datatablereader.getschematable.aspx
/// </remarks>
private DataTable CreateSchemaDataTable(SqlDataReader reader)
{
if (reader == null) { return null; }
if (reader.IsClosed) { return null; }
DataTable schema = reader.GetSchemaTable();
DataTable dt = new DataTable();
foreach (DataRow row in schema.Rows)
{
// Column情報を追加してください。
DataColumn col = new DataColumn();
col.ColumnName = row["ColumnName"].ToString();
col.DataType = Type.GetType(row["DataType"].ToString());
if (col.DataType.Equals(typeof(string)))
{
col.MaxLength = (int)row["ColumnSize"];
}
dt.Columns.Add(col);
}
return dt;
}
|