C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: ASP.NETでORACLEに接続


(過去ログ 117 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■68895 / inTopicNo.1)  ASP.NETでORACLEに接続
  
□投稿者/ nat (5回)-(2013/11/24(Sun) 10:23:00)

分類:[.NET 全般] 

環境XP
Oracle XE11G
Microsoft Visual Web Developer 2010 Express

//変数の宣言は省略します。。


        factory = _
     DbProviderFactories.GetFactory("Oracle.DataAccess.Client")
        ocsb = factory.CreateConnectionStringBuilder
        ocsb("Data Source") = "XE"
        ocsb("User ID") = "System"
        ocsb("Password") = "PASS"

        conn = factory.CreateConnection()
        conn.ConnectionString = ocsb.ConnectionString
        conn.Open()

        cmd = conn.CreateCommand()
        cmd.CommandText = "SELECT * FROM TEST1TBL"
        cmd.Connection = conn
        Dim cReader As Oracle.DataAccess.Client.OracleDataReader
        cReader = cmd.ExecuteReader()

    ↑この最後の行で下記内容のエラーが発生してます。

    エラー内容・・・
    
[A]Oracle.DataAccess.Client.OracleDataReader は [B]Oracle.DataAccess.Client.OracleDataReader にキャストできません。

型 A は 'Oracle.DataAccess, Version=4.112.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342' (コンテキスト 'Default'、位置 'C:\WINDOWS\Microsoft.Net\assembly\GAC_32\Oracle.DataAccess\v4.0_4.112.2.0__89b483f429c47342\Oracle.DataAccess.dll') から生成されます。


型 B は 'Oracle.DataAccess, Version=2.112.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342' (コンテキスト 'Default'、位置 'C:\WINDOWS\assembly\GAC_32\Oracle.DataAccess\2.112.2.0__89b483f429c47342\Oracle.DataAccess.dll') から生成されます。

 

どうやってどこを修正すればいいのか調べても分からずに困っています。

どなたかご教授戴けないでしょうか?
     
何かお気づきの点だけでもいいのでどうか宜しくお願い致します。

引用返信 編集キー/
■68896 / inTopicNo.2)  Re[1]: ASP.NETでORACLEに接続
□投稿者/ しま (46回)-(2013/11/24(Sun) 10:55:16)
No68895 (nat さん) に返信
> 環境XP
> Oracle XE11G
> Microsoft Visual Web Developer 2010 Express
>
> //変数の宣言は省略します。。
>
>
> factory = _
> DbProviderFactories.GetFactory("Oracle.DataAccess.Client")
> ocsb = factory.CreateConnectionStringBuilder
> ocsb("Data Source") = "XE"
> ocsb("User ID") = "System"
> ocsb("Password") = "PASS"
>
> conn = factory.CreateConnection()
> conn.ConnectionString = ocsb.ConnectionString
> conn.Open()
>
> cmd = conn.CreateCommand()
> cmd.CommandText = "SELECT * FROM TEST1TBL"
> cmd.Connection = conn
> Dim cReader As Oracle.DataAccess.Client.OracleDataReader
> cReader = cmd.ExecuteReader()
>
>     ↑この最後の行で下記内容のエラーが発生してます。
>
>     エラー内容・・・
>     
> [A]Oracle.DataAccess.Client.OracleDataReader は [B]Oracle.DataAccess.Client.OracleDataReader にキャストできません。
>
> 型 A は 'Oracle.DataAccess, Version=4.112.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342' (コンテキスト 'Default'、位置 'C:\WINDOWS\Microsoft.Net\assembly\GAC_32\Oracle.DataAccess\v4.0_4.112.2.0__89b483f429c47342\Oracle.DataAccess.dll') から生成されます。
>
>
> 型 B は 'Oracle.DataAccess, Version=2.112.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342' (コンテキスト 'Default'、位置 'C:\WINDOWS\assembly\GAC_32\Oracle.DataAccess\2.112.2.0__89b483f429c47342\Oracle.DataAccess.dll') から生成されます。
>
>  
>
> どうやってどこを修正すればいいのか調べても分からずに困っています。
>
> どなたかご教授戴けないでしょうか?
>
> 何かお気づきの点だけでもいいのでどうか宜しくお願い致します。
>

ご教授する事などありませんが、気付いたことがあります
気づいたこと
型が違っていると教えてくれているのだから、型を合わせればいいだけではないのですか?
cReader と cmd.ExecuteReader() との型が違っているのだからどちらかの型に合わせればいいだけでしょう
(ヒントは Version=4.112.2.20 と Version=2.112.2.20 とですね)

これ以上は変数の型宣言や Oracle.DataAccess をどのように参照させているのか不明なので何とも言えません
引用返信 編集キー/
■68897 / inTopicNo.3)  Re[2]: ASP.NETでORACLEに接続
□投稿者/ Jitta (105回)-(2013/11/24(Sun) 11:06:58)
Jitta さんの Web サイト
No68896 (しま さん) に追加
> 型が違っていると教えてくれているのだから、型を合わせればいいだけではないのですか?
> cReader と cmd.ExecuteReader() との型が違っているのだからどちらかの型に合わせればいいだけでしょう
> (ヒントは Version=4.112.2.20 と Version=2.112.2.20 とですね)
>
> これ以上は変数の型宣言や Oracle.DataAccess をどのように参照させているのか不明なので何とも言えません

省略された変数の宣言で使用した型に、解決方法がありそうです。
引用返信 編集キー/
■68898 / inTopicNo.4)  Re[3]: ASP.NETでORACLEに接続
□投稿者/ nat (6回)-(2013/11/24(Sun) 12:12:10)
2013/11/24(Sun) 12:35:04 編集(投稿者)
2013/11/24(Sun) 12:34:58 編集(投稿者)

No68897 (Jitta さん) に返信
> ■No68896 (しま さん) に追加
>>型が違っていると教えてくれているのだから、型を合わせればいいだけではないのですか?
>>cReader と cmd.ExecuteReader() との型が違っているのだからどちらかの型に合わせればいいだけでしょう
>>(ヒントは Version=4.112.2.20 と Version=2.112.2.20 とですね)
>>
>>これ以上は変数の型宣言や Oracle.DataAccess をどのように参照させているのか不明なので何とも言えません
>
> 省略された変数の宣言で使用した型に、解決方法がありそうです。

Jittaさん、しまさん、ご回答ありがとうございます

変数の宣言は以下になります。

Dim factory As DbProviderFactory
Dim ocsb As DbConnectionStringBuilder '接続文字列ビルダ
Dim conn As DbConnection
Dim cmd As DbCommand

あと、Web.configの中身は以下になります

<configuration>
<connectionStrings>
<add name="ApplicationServices"
connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\localhost.SYSTEM;User Instance=true"
providerName="Oracle.DataAccess.Client" />
</connectionStrings>

<system.web>
<compilation debug="true" strict="false" explicit="true" targetFramework="4.0" />

<authentication mode="Forms">
<forms loginUrl="~/Account/Login.aspx" timeout="2880" />
</authentication>


> Dim cReader As Oracle.DataAccess.Client.OracleDataReader

    Dim cReader As DbDataReader
cReader = cmd.ExecuteReader()

で、おかげさまで無事に解決しました!

色々ご指摘ご教授に感謝します。

大変有難うございました!
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -