C# ADO.NET SELECT
C#でADO.NETでSELECTを行ってみます。前回をベースに行うので、そちらも参照下さい。
SELECTのサンプル
using Npgsql;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
namespace test
{
class Program
{
static void Main(string[] args)
{
var connString = "Host=localhost;Port=5432;Username=postgres;Password=ps;Database=postgres";
using (var conn = new NpgsqlConnection(connString))
{
conn.Open();
using (var da = new NpgsqlDataAdapter("select * from m_user", conn))
{
SelectTest(da);
}
}
}
static void SelectTest(DbDataAdapter da)
{
var dataSet = new DataSet();
da.Fill(dataSet,"TBL");
var cols = new List<string>();
foreach (DataColumn col in dataSet.Tables["TBL"].Columns)
{
cols.Add(col.Caption);
}
foreach (DataRow row in dataSet.Tables[0].Rows)
{
int idx = 0;
foreach(string col in cols)
{
Console.WriteLine(row[idx++]);
Console.WriteLine(row[col]);
}
}
}
}
}
実行イメージ
まずはSELECT文を指定して、DbDataAdapterを作成します。
(サンプルではNpgsqlDataAdapter)
DbDataAdapterに対してFillメソッドを実行して、DataSetに取得結果を格納します。
サンプルでは、"TBL"のようにテーブル名を指定しましたが、省略することもできます。
//これでもOK
da.Fill(dataSet);
DataSetはDataTable(テーブル)を持ち、DataTableは、DataRow(行)を持ち、DataRowは各項目データを持ちます。
DataSet
├DataTable
│├DataRow
│├DataRow
│└DataRow
├DataTable
└DataTable
DataTable、DataRowはインデックス指定でも、名称指定でも中のデータを取得できます。
DataTable[インデックス(0,1,2,3~)]
DataTable[テーブル名]
DataRow[インデックス(0,1,2,3~)]
DataRow[項目名]
ページのトップへ戻る