- - PR -
データアダプタでの更新
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-08-25 16:57
開発環境
ADO.NET、VB.NET ORACLE10g テーブルのデータをDataTableに読み込んでDataGridにバインディングして表示。 グリッドを直接編集し、行が変わるたびにデータアダプタのUPDATEメソッドを使ってデータベースに反映しています。 主キーが1つでも設定されているテーブルへの反映はできるのですが、主キーが設定 されていないテーブルへの反映が出来ません。 エラーメッセージ「Dynamic SQLの生成に失敗しました。キー情報が見つかりません。」 と表示されてしまいます。 主キーを1つ以上設定しないと出来ないのでしょうか? よろしくお願いいたします。 | ||||
|
投稿日時: 2005-08-26 11:53
CommandBuilderを使って自動的にUpdateで使われるCommandを生成しているような
場合は、テーブルに主キーがないといけないと思います。 DataAdapterのInsertCommand、UpdateCommand、DeleteCommandを自分で書けば 主キーのないテーブルでも変更は可能だと思います。 | ||||
|
投稿日時: 2005-08-26 13:16
もしも数字のみの文字列を主キーにしているのならば
DBのデザイン データ型に、オートナンバー がありませんか? それを選択すれば、自動で割り振ってくれるかもしれませんよ。 | ||||
|
投稿日時: 2005-08-26 17:44
どっとねっとふぁんさん、セインさん返信ありがとうございます。
今やっているのはテーブル上に4つの項目があり主キーがないのです。 その項目4つとも変更することが出来てしまいます。 UpdateCommandコマンドやDeleteCommandコマンドを使おうと思ったのですが、 Where句の条件に指定する項目がありません。 Select時にRowIDを追加してみたのですが、Updateはできるようになったのですが、 逆にInsertが「ここでは仮想列は使用できません。」とエラーになってしまいます。 アドバイスよろしくお願いいたします。 | ||||
|
投稿日時: 2005-08-27 00:29
msoです。
Insert時だけ、普通にINSERT文を生成して、実行するってのはだめですか? | ||||
|
投稿日時: 2005-08-29 09:19
msoさん返信ありがとうございます。
結局、DBにキーを設定してもらう方向で進めることができました。 みなさまのアドバイスありがとうございました。 |
1