DOBON.NETプログラミング道掲示板

■34165 / 1階層)  Visual Studio DataTableの値のアクセスの仕方
□投稿者/ 魔界の仮面弁士 大御所(1205回)-(2019/02/26(Tue) 18:21:20)
  • アイコン2019/02/26(Tue) 22:10:07 編集(投稿者)

    No34164に返信(メンバーさんの記事)
    > 環境/言語:[c#] 

    誤: c#
    正: C#


    細かいことですが、日本工業規格 JIS X 3015 において、
    『C#は,LATIN CAPITAL LETTER C (U+0043)の次に NUMBER SIGN # (U+0023)を書く。』
    と明記されていますので、一応指摘まで。



    > Visual Studio2015のウォッチウィンドウでDataTableの値を探しています。

    ウォッチウィンドウやローカルウィンドウで、
    変数 ds や dt を表示させているという意味でしょうか。

    一時停止中に、ウォッチウィンドウの 虫眼鏡 アイコンをクリックすれば、
    DataTable の内容をグリッド表示できますね。


    > Rowsオブジェクトの中をみてもRowsオブジェクト直下にItemArrayも表示されていません。

    Rows プロパティが返すオブジェクトは、「DataRow クラス」のインスタンスではなく、
    DataRow のコレクションにあたる「DataRowCollection クラス」のインスタンスだからです。


    DataTableCollection tables = ds.Tables;
    DataTable table1 = tables["Table1"];
    DataRowCollection rows = table1.Rows;
    DataRow row0 = rows[0];
    object[] items = row0.ItemArray;
    dynamic data1 = row0["A"];
    dynamic data2 = items[0];



    > Console.WriteLine(ds.Tables["Table1"].Rows[0]["A"].ToString());

    折角 DataTable 型の変数 dt を保持しているのですから、
     Console.WriteLine(dt.Rows[0]["A"]);
    のようにした方が短く書けますよ。



    > DataSet ds = new DataSet();
    > DataTable dt = new DataTable();
    > dt.Columns.Add("A");
    >   :
    > ds.Tables.Add(dt);
    > dt.TableName = "Table1";

    上記の処理は、
     DataSet ds = new DataSet();
     DataTable dt = ds.Tables.Add("Table1");
     dt.Columns.Add("A");
       :
    のように短く書けます。


    このとき、「dt.Columns.Add("A");」という処理は
    string 型の列を追加することを意味しています。

    ※「dt.Columns.Add("A", typeof(string));」と同義。

    ですから、
    > row["A"] = i;
    のように、int 型の値を代入するのではなく、
     row["A"] = i.ToString();
    のように、string 型の値を代入することが望ましいです。

    もしも int 値を保存するための列なのであれば、
     dt.Columns.Add("A", typeof(int));
    としておきましょう。


    > // 4行追加します。
    追加し終わったら
     ds.AccesptChanges();
    を呼んでおくと良いでしょう。

    データテーブルの各行は、
     「追加された行」「未編集の行」
     「編集済み行」「削除された行」
    といった状態を管理しているものだからです。


    // 「追加された行」を確定して「未編集の行」にする
    dt.AcceptChanges();

    // 値が 1 から "100" へと編集された
    dt.Rows[0]["A"] = "100";

    // 現在の値 "100" を出力
    Console.WriteLine(dt.Rows[0]["A"]);

    // 変更前の値 1 が出力される
    Console.WriteLine(dt.Rows[0]["A", DataRowVersion.Original]);
違反を報告
削除キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Visual Studio DataTableの値のアクセスの仕方 /メンバー 返信無し
 
上記関連ツリー

Nomalアイコン Visual Studio DataTableの値のアクセスの仕方 / メンバー (19/02/26(Tue) 17:39) #34164
Nomalアイコン Visual Studio DataTableの値のアクセスの仕方 / 魔界の仮面弁士 (19/02/26(Tue) 18:21) #34165 ←Now
Nomalアイコン Re[1]: Visual Studio DataTableの値のアクセスの仕方 / shu (19/03/30(Sat) 07:21) #34199

All 上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信

Mode/  Pass/


- Child Tree -