トッカンソフトウェア

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[項目名]

			

ページのトップへ戻る