- - PR -
ADO.NETでのNull
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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を含んでいるデータの表示方法をご教授ください。 |
|
投稿日時: 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に変えたりしていませんか? |
|
投稿日時: 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"を指定してあるだけで他はいじっておりません。 よろしくお願いします。 |
|
投稿日時: 2002-11-06 10:53
こんにちわ。
データセットのNULLはデザイナの各行のプロパティ[nillable]にありますよ。 これをTrueにしてあげればどうでしょうか? |
|
投稿日時: 2002-11-06 15:24
こんにちは。
>データセットのNULLはデザイナの各行のプロパティ[nillable]にありますよ。 >これをTrueにしてあげればどうでしょうか? そうですね。僕もTogさんの仰るとおり、単純にSQLServerのテーブル定義と、DataSetNの方の定義が異なっているだけではないかと思います。もう一度、対象のDataAdapterを作り直してみて、そこからDataSetを上書きで作成すれば直るのではないかと思います。 _________________ -------------------------------------- ネットビルド 小田原貴樹 odahara@netbuiuld.jp -------------------------------------- |
|
投稿日時: 2002-11-06 16:29
Tog さん、うりゅう さんコメント有難うございました。
新規に全て作り直すと、問題なく表示できたりします。 しかし別のテーブルを追加したりしていると、また同じエラーが出る状態になったり してしまいます。 私の環境が何か不安定な要素をもっているのかも知れません。 基本的には皆さんのコメントでSQL Server側の設定をそのまま引き継ぐ と言うことですのでテーブルの定義から見直してみます。 |
|
投稿日時: 2002-11-07 10:54
新規に作り直すと再度NULLになるというのであれば問題のテーブルのDataAdapterを再度構成しなおすとよいはずです。
データベースサーバー上でNULLの設定やデータタイプの変更した場合はDataAdapterを再度構成する必要があります。DataAdapterは最初に作成されたDB情報でDataAdapterが作成されているので。 |
|
投稿日時: 2002-11-07 10:54
新規に作り直すと再度NULLになるというのであれば問題のテーブルのDataAdapterを再度構成しなおすとよいはずです。
データベースサーバー上でNULLの設定やデータタイプの変更した場合はDataAdapterを再度構成する必要があります。DataAdapterは最初に構成されたDB情報でDataAdapterが作成されているので。 |