- PR -

ADO.NETでのNull

投稿者投稿内容
tabou
常連さん
会議室デビュー日: 2002/07/15
投稿数: 39
投稿日時: 2002-11-05 15:48
いつも、お世話になっております。

WindowsFormにDataGridを配置しADO.NETでSQLServerのデータをDateaSetに取得し
これをに表示したいのですが、Nullを許容しているフィールドがあり
sqlDataAdapter1.Fill(dataSet11, "SMaster");
を実行すると

「'System.Data.ConstraintException' のハンドルされていない例外が system.data.dll で発生しました。
追加情報 : 制約を有効にできませんでした。1 つ以上の行に、Null か、一意でないか、または外部キー制約違反の値が含まれています。」

とエラーが出てしまいます。

過去ログをさがしたり、Helpを見たりしたのですがこの辺のところが見つかりません。

Nullを含んでいるデータの表示方法をご教授ください。




Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2002-11-05 17:15
こんにちは。

>>sqlDataAdapter1.Fill(dataSet11, "SMaster");

"SMaster"の、コードでの定義はどうなっていますか。SQL Serverのほうにはnull値が入っているんですよね?そうであれば、DataSet11."SMaster"でnullを許容しないようになっていると思います。

 この名前を見る限り、SQL ServerのデータをIDE上に貼り付けたSqlDataAdapterから作成したように見えますが、そうするとSQL Server側の設定をそのまま引き継ぐ・・・少なくともOleDbの方は引き継ぐようになっているんですけどねぇ。。。NOT NULLで作って、その後でNULLに変えたりしていませんか?
tabou
常連さん
会議室デビュー日: 2002/07/15
投稿数: 39
投稿日時: 2002-11-05 17:46
Jitta さん コメント有難うございます

Jittaさんの書き込み (2002-11-05 17:15) より:
>>"SMaster"の、コードでの定義はどうなっていますか。SQL Serverのほうにはnull値が入っているんですよね?そうであれば、DataSet11."SMaster"でnullを許容しないようになっていると思います。

DataSet11."SMaster"でnullを許容する設定は何処ですればよいのでしょうか?

Jittaさんのおっしゃるとうり、SQL ServerのデータをIDE上に貼り付けたSqlDataAdapterから作成したものです、後はDataGridのDataSourceにDataSet11."SMaster"を指定してあるだけで他はいじっておりません。

よろしくお願いします。



Tog
ベテラン
会議室デビュー日: 2002/06/09
投稿数: 76
投稿日時: 2002-11-06 10:53
こんにちわ。

データセットのNULLはデザイナの各行のプロパティ[nillable]にありますよ。
これをTrueにしてあげればどうでしょうか?

うりゅう
大ベテラン
会議室デビュー日: 2002/06/15
投稿数: 202
お住まい・勤務地: Hiroshima
投稿日時: 2002-11-06 15:24
こんにちは。

>データセットのNULLはデザイナの各行のプロパティ[nillable]にありますよ。
>これをTrueにしてあげればどうでしょうか?

そうですね。僕もTogさんの仰るとおり、単純にSQLServerのテーブル定義と、DataSetNの方の定義が異なっているだけではないかと思います。もう一度、対象のDataAdapterを作り直してみて、そこからDataSetを上書きで作成すれば直るのではないかと思います。
_________________
--------------------------------------
ネットビルド 小田原貴樹
odahara@netbuiuld.jp
--------------------------------------
tabou
常連さん
会議室デビュー日: 2002/07/15
投稿数: 39
投稿日時: 2002-11-06 16:29
Tog さん、うりゅう さんコメント有難うございました。

新規に全て作り直すと、問題なく表示できたりします。
しかし別のテーブルを追加したりしていると、また同じエラーが出る状態になったり
してしまいます。
私の環境が何か不安定な要素をもっているのかも知れません。
基本的には皆さんのコメントでSQL Server側の設定をそのまま引き継ぐ
と言うことですのでテーブルの定義から見直してみます。

Tog
ベテラン
会議室デビュー日: 2002/06/09
投稿数: 76
投稿日時: 2002-11-07 10:54
新規に作り直すと再度NULLになるというのであれば問題のテーブルのDataAdapterを再度構成しなおすとよいはずです。

データベースサーバー上でNULLの設定やデータタイプの変更した場合はDataAdapterを再度構成する必要があります。DataAdapterは最初に作成されたDB情報でDataAdapterが作成されているので。
Tog
ベテラン
会議室デビュー日: 2002/06/09
投稿数: 76
投稿日時: 2002-11-07 10:54
新規に作り直すと再度NULLになるというのであれば問題のテーブルのDataAdapterを再度構成しなおすとよいはずです。

データベースサーバー上でNULLの設定やデータタイプの変更した場合はDataAdapterを再度構成する必要があります。DataAdapterは最初に構成されたDB情報でDataAdapterが作成されているので。

スキルアップ/キャリアアップ(JOB@IT)