- - PR -
【ASP.NET】でOracle8iへの接続とText表示
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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 以上、ご教示の程よろしくお願い申し上げます。 |
|
投稿日時: 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 15:59
間違っていたらすいません。
DBcn.Open がないためにコネクションの確立がされていないためその後の レコードセットのオープンでエラーが発生しているのでは。 |
|
投稿日時: 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-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-13 22:32
あさやん様ご返答ありがとうございます。
あさやん様の言う通り実行すると、やはりODBCドライバが無いと言われます。 OleDBで進めてみようと思います。DataGridもOleDBなんですよね・・・・。 |
1