- - PR -
コマンドビルダーが作成するUPDATE文を表示
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2002-12-19 11:51
こんにちは!
コマンドビルダーが自動生成するSQL文が取得できなくて困っています。 以下に詳細内容を書きましので,分かる方がいましたら,是非教えて下さい。 よろしくお願いします。 ■プログラム概要: windowsアプリケーションでADO.NETを使用しOracle8.1.7.0.0と接続。 コマンドビルダーを使用し,データアダプタに設定したSQL(Select文)に対するUpdate文を 自動生成する。 ■実現したいこと コマンドビルダーが自動生成するUpdate文(SQL)をデバックプリントに表示させたい ■エラー詳細: デバッグプリント出力時に 「UpdateCommand の動的 SQL 生成は、キーである列情報を返さない SelectCommand に対してサポートされていません。」 というエラーメッセージが出力されてエラーとなります。 ■既に確認した事項: データソース内に主キーが設定されているか?→されている。 ■以下はコード データベース接続部分: Dim strConn As String 'コネクション設定文字列 strConn = "Provider=MSDAORA;" & _ "Data Source=" & **** & ";" & _ "User ID=" & **** & ";Password=" & _ **** & ";" GmadcnnOra = New OleDb.OleDbConnection() GmadcnnOra.ConnectionString = strConn GmadcnnOra.Open() ******************************* データアダプタ・データセット・コマンドビルダーの宣言 Protected getTbl As String = "getTbl" 'データセットに設定するTBL名称 Protected adadpOra As OleDb.OleDbDataAdapter 'データアダプタ Public dsOra As DataSet 'データセット Public cdOra As OleDb.OleDbCommandBuilder 'コマンドビルダー dim SQL as string ’SQL文 ※SQLは単一のテーブルからある条件を取得するだけのものです。 ("select * from ***** where ***** ='**'") データアダプタの作成 adadpOra = New OleDb.OleDbDataAdapter() adadpOra.SelectCommand = New OleDb.OleDbCommand(SQL, GmadcnnOra) コマンドビルダーの作成 cdOra = New OleDb.OleDbCommandBuilder(adadpOra) 'データセットの作成 dsOra = New DataSet() Try adadpOra.MissingSchemaAction = MissingSchemaAction.AddWithKey adadpOra.Fill(dsOra, getTbl) スキーマ情報のリフレッシュ cdOra.RefreshSchema() ◎◎◎ここでエラーが発生◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎ コマンドビルダーのGetUpdateCommandを発行し,CommandTextに生成されているSQLをデバッグプリントに出力する。 Debug.WriteLine(cdOra.GetUpdateCommand.CommandText) ◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎ adadpOra.Update(dsOra, getTbl) Catch e As Exception Debug.WriteLine(e.Message) End Try ★もしかしてデータプロバイダに問題があるのでしょうか? なぜエラーになるのか分かる方がいたら教えて下さい。 よろしくお願いします。 |
1