- PR -

コマンドビルダーが作成するUPDATE文を表示

1
投稿者投稿内容
けんぞー
会議室デビュー日: 2002/12/11
投稿数: 11
投稿日時: 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

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