none
DB で設定した既定値を DataSet に引き継がせるには RRS feed

  • 質問

  • 目的
    ----
    データベースで設定した既定値を DataSet でも有効にする。

     


    上記目的のため、データベースを作り、そのテーブルに "created" という
    DateTime 型のフィールドを設け、その既定値として getdate() を設定しました。

     

    その後、ウィザードを使って DataSet として取り込み、DataTable での
    "created" フィールドの既定値を確認すると DBNull になっていました。

     

    DB の getdate() に相当する何か(?) になっていてくれることを期待してたのに。

     

    何か方法が間違っているのでしょうか?

    それとも、既定値を引き継がせることはできないのでしょうか?


    - 確認画像

    2008年1月21日 12:18

回答

すべての返信

  • 以下のページの一番最後が参考になるでしょう。


    第10章 データベースの更新の実行
    http://www.microsoft.com/japan/msdn/net/books/ProgADONET/chapter10.aspx

    2008年1月21日 16:15
    モデレータ
  • 抜粋

    コード ブロック

    - SQL Serverなどのデータベースでは、データベースの列に対して既定値を定義できます。


    - ADO.NET の DataColumn オブジェクトの DefaultValue プロパティは、
        そのデータベース機能に厳密に対応するわけではありません。


    - ADO.NET では、データベースの既定値が自動的に生成されないようになっています


    - ADO.NETの場合、一番簡単な解決策は、
        新しい行を追加した時点で
        目的の列に自動的に既定値を設定する
    コードをアプリケーションに追加することです。

     


    最後の行、実際そうやって取り敢えず本件を回避していましたが、仕方ないんですね。

     

    trapemiya さん、サポートありがとうございます。


    相変わらず、凄い検索能力ですね。
    それとも引用ページを全部読まれていたとか。それも凄いけど。

    2008年1月21日 17:28
  •  custar さんからの引用

    相変わらず、凄い検索能力ですね。
    それとも引用ページを全部読まれていたとか。それも凄いけど。

     

    以前読んだことはありますが、忘れてました(^^;

    DefaultValueを思い浮かべて、「defaultvalue datatable 規定値」ぐらいで検索しました。

    DefaultValueが今回のキーワードですね。

    2008年1月22日 1:16
    モデレータ
  •  trapemiya さんからの引用

    DefaultValueを思い浮かべて、「defaultvalue datatable 規定値」ぐらいで検索しました。
    DefaultValueが今回のキーワードですね。


    なかなか難しいもんですね。私は「sql server 既定値 バインド」や
    「defaultvalue getdate」で調べていました。

     

    前者は全て引用ページに含まれていましたが、気付かず。

    後者は "getdate" が具体的過ぎたのでしょう、引用ページに含まれず。

     

    defaultvalue は引用ページで1箇所だけに出現。

     

    更に、そのキーワード群の検索結果には本件に関わりありそうなものが出てきました。

     

    - フィールドの規定値や数式を取得したい - Insider.NET
    - DataTableの規定値に、DB側で設定した規定値が引き継がれない - MSDN フォーラム


    「defaultvalue datatable sql server dbnull」

    - How to set DefaultValue property for a DateTime data column in VS.NET designer
      ※ 正 (まさ) しくそうしてる。


    いずれにしても、今回教えていただいた情報で納得できました。
    ありがとうございます。

    2008年1月22日 3:16