0

Oracle 12c サーバーに接続する Windows フォーム アプリケーションを設計しました。クライアントが 32 ビットのオペレーティング システムを使用しており、oracle c は 64 ビットのオペレーティング システムにしかインストールできないことを発見するまで、すべてが素晴らしかったです。

このバージョンはクライアントのコンピューターにインストールできるため、アプリケーションを oracle 11g で動作するように 1 週​​間適応させようとしましたが、絶望的な作業になりつつあります。Oracle 11g の ODBC には Oracle.ManagedDataAccess.dll が含まれていません。また、Oracle.DataAccess は、使用しているストアド プロシージャからブール データ型を読み取ることができません。すべての手順を変更し、Oracle.ManagedDataAccess.dll に関連するすべての問題を修正するか、Oracle 11g を使用して新しいアプリケーションを開発することから始める必要があります。仮想マシンに Windows 7 32 ビットをインストールし、非常に小さなバージョンのアプリケーションから開始して作業を行っていましたが、作業には時間がかかりすぎました。

  • アプリケーションを oracle 11g と互換性を持たせるためのより高速な方法または解決策はありますか?
  • oracle 11g は、oracle 12c よりも弱くて制限のあるコンピューターに本当に適していますか? (クライアントに 64 ビット オペレーティング システムをインストールし、使用しているすべてのプログラムを再インストールするよう説得できた場合): クライアントには 2GB の RAM があります。

アップデート :

指示どおりにパックをインストールし、アプリケーションが実行されるようになりました。唯一の問題は、ブール型のパラメーターを追加するときにエラーが発生することです。エラーは次のとおりです。「Oracle.DataAccess.Client.OracleDbType」にはブール型の定義が含まれていません

これは、プロシージャを呼び出すために使用しているコードです:

tring constr = "DATA SOURCE=localhost;PASSWORD=kidzclubadministration;PERSIST SECURITY INFO=True;USER ID=C##KidzClub";
OracleConnection con = new OracleConnection(constr);   
OracleCommand cmd = new OracleCommand();
cmd.Connection = con;
con.Open();

cmd.CommandText = "get_admin_pass";
cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Add("pass", OracleDbType.NVarchar2);
cmd.Parameters["pass"].Direction = ParameterDirection.Input;
cmd.Parameters["pass"].Value = password;

cmd.Parameters.Add("done", OracleDbType.Boolean);
cmd.Parameters["done"].Direction = ParameterDirection.Output;

cmd.ExecuteNonQuery();

正確なエラー文は次のとおりです。

Error   2   'Oracle.DataAccess.Client.OracleDbType' does not contain a definition for 'Boolean' C:\Users\Jad-HP\Desktop\Windows Application\WindowsFormsApplication1\WindowsFormsApplication1\Form5.cs  44  53  WindowsFormsApplication1

OracleDbType 定義に移動しましたが、 Boolean の定義が見つかりませんでした:

#region Assembly Oracle.DataAccess.dll, v2.111.7.20
// C:\app\Jad-HP\product\11.1.0\client_2\ODP.NET\bin\2.x\Oracle.DataAccess.dll
#endregion

using System;

namespace Oracle.DataAccess.Client
{
public enum OracleDbType
{
    BFile = 101,
    Blob = 102,
    Byte = 103,
    Char = 104,
    Clob = 105,
    Date = 106,
    Decimal = 107,
    Double = 108,
    Long = 109,
    LongRaw = 110,
    Int16 = 111,
    Int32 = 112,
    Int64 = 113,
    IntervalDS = 114,
    IntervalYM = 115,
    NClob = 116,
    NChar = 117,
    NVarchar2 = 119,
    Raw = 120,
    RefCursor = 121,
    Single = 122,
    TimeStamp = 123,
    TimeStampLTZ = 124,
    TimeStampTZ = 125,
    Varchar2 = 126,
    XmlType = 127,
    Array = 128,
    Object = 129,
    Ref = 130,
    BinaryDouble = 132,
    BinaryFloat = 133,
}
}

私がOracle 12cで開発しているVisual Studioで同じ定義に行くとき、私は Boolean の定義を持っています:

#region Assembly Oracle.DataAccess.dll, v4.121.1.0
// D:\app\Jad-HP\product\12.1.0\client_2\ODP.NET\bin\4\Oracle.DataAccess.dll
#endregion

using System;

namespace Oracle.DataAccess.Client
{
public enum OracleDbType
{
    BFile = 101,
    Blob = 102,
    Byte = 103,
    Char = 104,
    Clob = 105,
    Date = 106,
    Decimal = 107,
    Double = 108,
    Long = 109,
    LongRaw = 110,
    Int16 = 111,
    Int32 = 112,
    Int64 = 113,
    IntervalDS = 114,
    IntervalYM = 115,
    NClob = 116,
    NChar = 117,
    NVarchar2 = 119,
    Raw = 120,
    RefCursor = 121,
    Single = 122,
    TimeStamp = 123,
    TimeStampLTZ = 124,
    TimeStampTZ = 125,
    Varchar2 = 126,
    XmlType = 127,
    Array = 128,
    Object = 129,
    Ref = 130,
    BinaryDouble = 132,
    BinaryFloat = 133,
    Boolean = 134,
}
}

すべての手順を変更し、すべてのブール変数を置き換える以外の解決策はありますか?

4

1 に答える 1