- PR -

【ASP.NET】でOracle8iへの接続とText表示

1
投稿者投稿内容
ゆうか
会議室デビュー日: 2002/12/11
投稿数: 12
投稿日時: 2002-12-11 00:59
題記の件、よろしくお願い申し上げます。
(目的)VB.NETのASPアプリケーションで、Oracleへ接続し、SQL文にて取得した内容をTextBoxへ表示するものです。
(プログラム内容)
 imports system.Data.OleDb
 'Oracle接続命令文
Dim strSQL As String
Dim DBcn As New ADODB.Connection()
Dim rs As New ADODB.Recordset()

  DBcn.ConnectionString = "User ID=" & "XXX" & ";Password=" & "XXX" & ";Data Source=" & "XXX"
  
  strSQL = "select 状態フラグ from test"

rs.Open(strSQL, DBcn)

txtSQL.Text = rs.Fields("状態フラグ").Value

rs.Close()
DBcn.Close()

(エラー内容)
 ***サーバエラー***
この操作を実行するために接続を使用できません。このコンテキストで閉じているかあるいは無効です。
説明 : 現在の Web 要求を実行中に、ハンドルされていない例外が発生しました。エラーに関する詳細および例外の発生場所については、スタック トレースを参照してください。

例外の詳細: System.Runtime.InteropServices.COMException: この操作を実行するために接続を使用できません。このコンテキストで閉じているかあるいは無効です。

ソース エラー:

行 155: rs.Open(strSQL, DBcn)

ソース ファイル : C:\Inetpub\wwwroot\WebApplication6\WebForm1.aspx.vb 行 : 155

スタック トレース:

[COMException (0x800a0e7d): この操作を実行するために接続を使用できません。このコンテキストで閉じているかあるいは無効です。]
ADODB.RecordsetClass.Open(Object Source, Object ActiveConnection, CursorTypeEnum CursorType, LockTypeEnum LockType, Int32 Options) +0

(疑問点)
・上記の「rs.Open(strSQL, DBcn)」にてエラーとなるのか疑問です。
・下記の文も必要かもしれませんが、DataEnvironmentでエラーとなります。 
 「DBcn = DataEnvironment.Connection」
・上記の方法でなくても、SQL文で指定した、テーブルの1項目をTextBoxへ表示できれば、よいのですが。

(環境)
 Win2000Pro、Oracle8i
 以上、ご教示の程よろしくお願い申し上げます。
mito
ベテラン
会議室デビュー日: 2002/05/17
投稿数: 50
投稿日時: 2002-12-11 13:52
ADOを使う方法はよくわからないのですが、OLE DBを使った方法なら
一例:
Dim strConnect As String = "Provider=OraOLEDB.Oracle;Data Source=X;User ID=Y;Password=Z;OLEDB.NET=true"
Dim strSQL As String = "適当なSQL"
Dim objReader As OleDbDataReader
Dim objDatabase As New OleDbConnection(strConnect)
Dim strValue As String = ""

Dim objCommand As New OleDbCommand(strSQL, objDatabase)
objDatabase.Open()
objReader = objCommand.ExecuteReader()
While objReader.Read()
strValue = objReader.GetString(0)
End While
objReader.Close()
objDatabase.Close()

Oracle8i付属のOLEDBをインストールしてください。
OracleのOracle Technology Network Japanのサンプル(OLEDB)に
DataAdapterを使った方法があります。

ODBCを使うには.NetFrameworkに追加インストールをする必要があったような・・・
詳しくはよくわかりません。

結構いいかげんなので、うまく動かなかったらごめんなさい。
あさやん
会議室デビュー日: 2002/12/11
投稿数: 2
投稿日時: 2002-12-11 15:59
間違っていたらすいません。
DBcn.Open
がないためにコネクションの確立がされていないためその後の
レコードセットのオープンでエラーが発生しているのでは。
ゆうか
会議室デビュー日: 2002/12/11
投稿数: 12
投稿日時: 2002-12-12 22:40
mito様、あさやん様、ご返答有難うございます。
 OLEDBの方法で、目的であったTextBoxへの表示ができました。
ありがとうございます。
 ADOを使った方法にて、チャレンジはしているのですが・・・???
[DBcn.Open]を入れると、下記のエラーがでます。
「[Microsoft][ODBC Driver Manager] データ ソース名および指定された既定のドライバが見つかりません。
説明 : 現在の Web 要求を実行中に、ハンドルされていない例外が発生しました。エラーに関する詳細およ
び例外の発生場所については、スタック トレースを参照してください。
例外の詳細: System.Runtime.InteropServices.COMException: [Microsoft][ODBC Driver Manager]
データ ソース名および指定された既定のドライバが見つかりません。」
OraclのHPからODBCパッチは当てたのに・・・・・

それで、今現在のエラーは下記です。
「HRESULT からの例外です : 0x800A0E7D。
説明 : 現在の Web 要求を実行中に、ハンドルされていない例外が発生しました。エラーに関する詳細および
例外の発生場所については、スタック トレースを参照してください。

例外の詳細: System.Runtime.InteropServices.COMException: HRESULT からの例外です : 0x800A0E7D。
ソース エラー:
行 83:
行 84: rs.Open(strSQL, DBcn)
行 85:

 上記は、よくわかりません。
あさやん
会議室デビュー日: 2002/12/11
投稿数: 2
投稿日時: 2002-12-13 09:37
ASP.NETはよくわかりませんがASPにて下記の方法でオラクルに接続しています。
Set DBcn = CreateObject("ADODB.Connection")
DBcn.Open "XXX","YYY","ZZZ"

XXX:Data Source
YYY:User ID
ZZZ:Password

または
DBcn.Open "DSN=XXX;UID=YYY;PWD=YYY"
でも出来ると思います。
ゆうか
会議室デビュー日: 2002/12/11
投稿数: 12
投稿日時: 2002-12-13 22:32
あさやん様ご返答ありがとうございます。
あさやん様の言う通り実行すると、やはりODBCドライバが無いと言われます。
OleDBで進めてみようと思います。DataGridもOleDBなんですよね・・・・。
1

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