tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルOracleのBLOB型の参照
記事No15561
投稿日: 2012/08/08(Wed) 11:57
投稿者Boze
環境
WindowsXP sp3、VB6.0、Oracle9.2
宜しくお願いします

まずコードを以下に示します。


Private sub GetBLOB
   Dim cnn as NEW ADODB.Connection
   Dim rstPubInfo As ADODB.Recordset

   ' Open a connection.
    With cnn
        .Provider = "MSDAORA"
        .Properties("Data Source") = "SourceName"
        .Properties("User ID") = "UID"
        .Properties("Password") = "PASS"
        .Open
    End With
  
   ' Open table.
   Set rstPubInfo = New ADODB.Recordset
   rstPubInfo.CursorType = adOpenKeyset
   rstPubInfo.LockType = adLockBatchOptimistic
   rstPubInfo.Open "SELECT COLUMNA,COLUMNB FROM TableName", cnn, , ,adCmdTable

コードはVBのヘルプ GetChunkより引用しています。


テーブル名 TableName
カラム情報 ColumnA;String型 ColumnB;BLOB型


Oracleのテーブルに格納されている画像をVBで取得しようとしています。
調べたところVBのヘルプにあるGetChunkを使用するとのことだったのでそれを参考に
上記を書いてみました。

最後の行で ORA- 00903 表名が無効です が返されます。
そこでDual表が参照できるか確認したところ同じエラーが返されました。
最後の行を

rstPubInfo.Open "SELECT * FROM DUAL", cnn

にすると参照は可能でした。
そこで同じように

rstPubInfo.Open "SELECT COLUMNA,COLUMNB FROM TableName", cnn

とすると今度は データ型はサポートされていません が返されました。

SQL*Plusで接続したところ、問題なく参照できます。
どうすれば問題は解決できるのでしょうか?
宜しくお願いします

[ツリー表示へ]
タイトルRe: OracleのBLOB型の参照
記事No15563
投稿日: 2012/08/08(Wed) 15:16
投稿者魔界の仮面弁士
> rstPubInfo.CursorType = adOpenKeyset
MSDAORA はキーセットカーソルをサポートしていません。
http://www.gizcollabo.jp/vbtomo/log/archive/vbdatabase_1138_0.html

Oracle 純正プロバイダに切り替えるか、もしくは MSDAORA の静的カーソルに切り替えましょう。


> テーブル名 TableName
> カラム情報 ColumnA;String型 ColumnB;BLOB型

Oracle において、大文字小文字の混在するテーブル名/列名を使うには、
 CREATE TABLE "TableName" (…
および
 SELECT * FROM "TableName" WHERE …
のように、キーワードを「"」で囲むことになっています。
(囲まなかった場合は、すべて大文字のテーブル名として扱われます)

今回の話とは関係ないとは思いますが、念のため。



> rstPubInfo.Open "SELECT COLUMNA,COLUMNB FROM TableName", cnn, , ,adCmdTable
> ORA- 00903 表名が無効です が返されます。
adCmdTable および adCmdTableDirect は「テーブル名」を指定するためのパラメータです。
  rstPubInfo.Open "DUAL", cnn, , ,adCmdTable

SQL を指定したい場合は、adCmdText を指定する必要があります。
  rstPubInfo.Open "SELECT DUMMY FROM DUAL", cnn, , ,adCmdText


> rstPubInfo.Open "SELECT COLUMNA,COLUMNB FROM TableName", cnn
> とすると今度は データ型はサポートされていません が返されました。

Oracle 純正の OLE DBプロバイダー(OraOLEDB.Oracle)、あるいはサードパーティ製の
OLE DB プロバイダーを利用してみてください。

もしくは ADO の代わりに oo4o を利用するのも手です。


このほか、ODBC 接続でも GetChuk が可能です(ただし ODBC 経由での接続はお奨めしません)。

[ツリー表示へ]
タイトルRe^2: OracleのBLOB型の参照
記事No15571
投稿日: 2012/08/13(Mon) 15:51
投稿者Boze
> このほか、ODBC 接続でも GetChuk が可能です(ただし ODBC 経由での接続はお奨めしません)。

OLE DBプロバイダーが他にないためODBCを使用するしかないようです。
調べてみてまたわからなければ改めて質問させて頂きます。

ありがとうございました

[ツリー表示へ]
タイトルRe^3: OracleのBLOB型の参照
記事No15573
投稿日: 2012/08/13(Mon) 17:14
投稿者魔界の仮面弁士
> OLE DBプロバイダーが他にないためODBCを使用するしかないようです。

Oracle 社の純正プロバイダー「Oracle Provider for OLEDB」(OraOLEDB.Oracle)を
OUI で追加インストールしてみてください。

[ツリー表示へ]
タイトルRe^4: OracleのBLOB型の参照
記事No15584
投稿日: 2012/08/15(Wed) 14:18
投稿者Boze
参照権限はあるのですがインストール権限がないのでできないんです。
あとはODBCですかねぇ...

[ツリー表示へ]