- PR -

データセットを使ったレコードの追加(ADO.NET)

1
投稿者投稿内容
tomos
会議室デビュー日: 2004/04/15
投稿数: 3
投稿日時: 2004-04-15 10:54
こんにちは。
“ADO.NET基礎講座”を読みながらADO.NETを調査しているものです。
この連載の5回目“データセットを使ったレコードの追加”のソースコードについて
質問があります。
ここで、データアダプタのInsertCommandプロパティを設定して、
Updateメソッドを呼び出してデータ挿入をするソース(insertds.cs)があります。

このソースを参考に、VB.netに置き換え、実行してみましたが、
da.update の場所でエラーになってしまいます。
SqlException例外を取得し、メッセージを見ると、
--------------------------------------------------
INSERT ステートメントは COLUMN CHECK で、
制約 'CK__publisher__pub_i__7C8480AE' と矛盾しています。
矛盾が発生したのは、
データベース 'pubs'、
テーブル 'publishers', column 'pub_id' です。
--------------------------------------------------
というエラーのようです。
pub_id のチェック制約に引っかかっているようですが、
重複しているわけでもなく、サイズなどがオーバしているわけでもなく、
なぜエラーが表示されているかわかりません。
VB.NETの書き方が悪いかと思い、ダウンロードしたCSファイルを利用しましたが、
同様の場所でエラーになってしまいます。

このソースを実行して、何か問題になった方などいらっしゃいますでしょうか。

ちなみに、環境は、Visual Studio .NET 2003 + MSDE です。
聖人@SKB
ベテラン
会議室デビュー日: 2003/03/26
投稿数: 58
お住まい・勤務地: 横浜(MM21)勤務の筈だがいつも顧客先常駐
投稿日時: 2004-04-15 12:16
ADO.NETの連載記事を確認していませんが、
エラーメッセージから判定するに、
publishersテーブルにInsertするpub_idが
CHECK制約で指定された値以外になっているからではないでしょうか。

「重複しているわけでもなく、サイズなどがオーバしているわけでもなく(略)」
という書き込みがありますが、
この”サイズなどがオーバしているわけでもなく”の意味が
”CHECK制約の制約式の条件を満たしている”
だとしたら、以下の書き込みは無視して下さい。

pubsデータベースのpublishersテーブルをデザインモードで開き、
デザイン画面上でマウスを右クリックし、「制約のチェック」を
実行してみてください。
CHECK制約の詳細が表示されます。
指定したpub_idがこの条件を満たしていないのだと思います。
tomos
会議室デビュー日: 2004/04/15
投稿数: 3
投稿日時: 2004-04-15 13:15
聖人@SKBさん、回答ありがとうございます。
ご連絡いただいた、制約チェックの画面、
早速調べてみます。
結果はまたご連絡します。
tomos
会議室デビュー日: 2004/04/15
投稿数: 3
投稿日時: 2004-04-16 09:46
こんにちは。

聖人@SKBさんのいただいた情報を元に早速調べました。
おっしゃるとおりのチェック制約が見つかりました。
別のデータベースを見ていたという凡ミスも重なり、
回答に時間がかかってしまいました。

ありがとうございます。
1

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