質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

解決済

2回答

4575閲覧

oracleの12と11の互換性について知りたいです

退会済みユーザー

退会済みユーザー

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

0クリップ

投稿2017/01/30 12:23

編集2017/01/31 05:21

お世話になっております。

先日、C#でoralceのデータベースをアクセスする際に質問させていただきました。
https://teratail.com/questions/63265)

その際にOracle.DataAccess.dllを使うことと、64bit、32bitを分けてプログラムを作成するべきだということを教えていただきました。
現在は全て32bitで作成し、ビルドするまでこぎつけることができました。

ですが、いざ動かそうとするとOracleCommandオブジェクトの宣言で例外エラーが出てしまい、正常に動作しません。
エラーの記述を探しましたが、滅多に出ないエラーなのか検索してもわかりませんでした。

使用する環境と作成した環境ののoracleのバージョンが違うと動かないのでしょうか?
もしそうでなければ解決方法をお答えください。

・追記
エラー情報は以下の通りです
'System.TypeInitializationException' の初回例外が GetInfo.exe で発生しました。

ソースコードは以下の通りです

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.IO;
using Oracle.DataAccess.Client;

namespace GetInfo
{
public class GetDataInfo
{
// 情報取得(引数:ID)
public string selectInfo(string strID)
{
string strSQL;
string selectedLow;
string connectionString = "Data Source=data_local;Persist Security Info=True;User ID=;Password=;Unicode=True";
selectedLow = "";

//接続先を定義(ここでエラーが出ています) using (OracleConnection con = new OracleConnection(connectionString)) { try { //DBを開く con.ConnectionString = "Data Source=data_local;Persist Security Info=True;User ID=****;Password=****;Unicode=True"; con.Open(); //IDを元にSQL文を発行 strSQL = "SELECT * FROM EATBKJ WHERE ID = " + strID; OracleCommand myCmd = new OracleCommand(strSQL, con); OracleDataReader myReader = myCmd.ExecuteReader(); //情報を取得する while (myReader.Read()) { selectedLow = myReader.GetString(0); } } //データ取得に失敗した場合 catch (Exception) { } //成否にかかわらず finally { //DBへの接続を切る con.Close(); } } //患者情報を返す return selectedLow; } }

}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Panzer_vor

2017/01/30 12:32

実際にでたエラーの記述の提示は可能でしょうか?
Panzer_vor

2017/01/30 12:43

連投すみません。後は可能でしたら問題の起こっているソースを抜粋して掲示していただくとより回答者側としてはありがたいですかね。
退会済みユーザー

退会済みユーザー

2017/01/31 05:21

質問に追記いたしました。エラーは「TypeInitializationExceptionはハンドルされませんでした。」と表示されています。
guest

回答2

0

ベストアンサー

申し訳ありません。こちらの手違いでエラーが出ていた事がわかりました。

以前、oracleのアンインストールに失敗し、そのままにしていた状態のoracleを使っていた事がわかりました。
oracleを再インストールする事で、問題個所だった接続先の定義をすることができました。

プログラムの内容は簡単なものなので、完成した上でoracle11、12の互換性があるかをテストします。

ご迷惑をかけて申し訳ありませんでした。

投稿2017/01/31 08:09

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Oracle® Data Provider for .NET開発者ガイド

ODP.NETおよび依存する非管理DLLの不一致

Oracle.DataAccess.dllアセンブリの非管理DLLの正しいバージョンでの使用を強制するため、Oracle.DataAccess.dllが依存する非管理DLLと異なるバージョンをロードすると例外が発生します。

ですかね?

使えるならNuGetのOfficial Oracle ODP.NET, Managed Driver

Install-Package Oracle.ManagedDataAccess

投稿2017/01/30 17:03

dojikko

総合スコア3939

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問