SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Oracle Tips

64bitに対応した「ODP.NET」を使ってみよう!

64bit環境のメリットを生かしたOracle データベース対応アプリケーション開発


 最後に「64-bit ODP.NET」からOracle Databaseに接続するコードを記述します。フォームに追加した[Button]コントロールの[Click]イベントに以下のコードを追記します。

「64-bit ODP.NET」からOracle Databaseに接続するコード(C#)
// ODP.NETの名前空間を定義
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;

namespace ODP64Smpl
{
  public partial class Form1 : Form
  {
    public Form1()
    {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
      // Oracle Databaseへの接続
      // 「data source」は、サーバー名(もしくはIP):ポート番号/サービス名を指定
      OracleConnection conn = 
        new OracleConnection("user id=scott;password=tiger;data source=localhost:1521/orcl11gr2");

      try
      {
        conn.Open();
        conn.Close();
        MessageBox.Show("データベースへ接続しました。");
      }
      catch(Exception ex)
      {
        MessageBox.Show("データベースへの接続に失敗しました。" + ex.Message);
      }   
    }
  }
}
「64-bit ODP.NET」からOracle Databaseに接続するコード(VB)
'// ODP.NETの名前空間を定義
Imports Oracle.DataAccess.Client
Imports Oracle.DataAccess.Types

Public Class Form1

  Private Sub button1_Click(sender As System.Object, e As System.EventArgs) Handles button1.Click
    '// Oracle Databaseへの接続
    '// 「data source」は、サーバー名(もしくはIP):ポート番号/サービス名を指定
    Dim conn As OracleConnection = _
      New OracleConnection("user id=scott;password=tiger;data source=localhost:1521/orcl11gr2")

    Try
      conn.Open()
      conn.Close()

      MessageBox.Show("データベースへ接続しました。")
    Catch ex As Exception
      MessageBox.Show("データベースへの接続に失敗しました。" + ex.Message)
    End Try
  End Sub
End Class

 ここで上記アプリケーションを実行すると[エラー一覧]ウィンドウに以下のような警告メッセージが表示されています。

アプリケーション実行時の警告メッセージ
アプリケーション実行時の警告メッセージ

 警告メッセージは「異なるプロセッサを対象にしています。」と表示されていますが、 原因は「64-bit ODP.NET」を32-bit .NET Framework上で動作させようとしているためにこのメッセージが表示されています。 現在、64bitか32bitどちらで動作しているのかを確認するのは以下のソースコードを[Button]コントロールの[Click]イベントに追加します。

64bitか32bitのどちらで動作しているかを確認するコード(C#)
// 以下の名前空間を追加
using System.Reflection;

namespace ODP64Smpl
{
  public partial class Form1 : Form
  {
    public Form1()
    {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
      // 以下の部分を既存のソースコードに追加
      // .NET Framework 3.5までは以下のコードで判定
      if (IntPtr.Size == 4)
      {
        MessageBox.Show("32ビットで動作中");
      }
      else if (IntPtr.Size == 8)
      {
        MessageBox.Show("64ビットで動作中");
      }

      // .NET Framework 4.0以降は以下のコードで判定
      if (System.Environment.Is64BitProcess)
      {
        MessageBox.Show("64ビットで動作中");
      }
      else
      {
        MessageBox.Show("32ビットで動作中");
      }
    }
  }
}
64bitか32bitのどちらで動作しているかを確認するコード(VB)
'// 以下の名前空間を追加
Imports System.Reflection

Public Class Form1
  Private Sub button1_Click(sender As System.Object, e As System.EventArgs) Handles button1.Click
    '// 以下の部分を既存のソースコードに追加
    '// .NET Framework 3.5までは以下のコードで判定
    If IntPtr.Size = 4 Then
      MessageBox.Show("32ビットで動作中")
    Else
      MessageBox.Show("64ビットで動作中")
    End If

    '// .NET Framework 4.0以降は以下のコードで判定
    If System.Environment.Is64BitProcess Then
      MessageBox.Show("64ビットで動作中")
    Else
      MessageBox.Show("32ビットで動作中")
    End If

  End Sub
End Class

 アプリケーションを実行すると、実行中のアプリケーションが64bitか32bitのどちらで実行されているかがメッセージボックスで表示されます。

 64bitとしてアプリケーションを実行するには、Visual Studioのメニューから[ビルド(B)]‐[構成マネージャー(O)]を選択し[構成マネージャー]ウィンドウを表示します。そして、[アクティブソリューションプラットフォーム(P)]から<新規作成...>を選択します。

構成マネージャーでの設定
構成マネージャーでの設定

 [新しいソリューション プラットフォーム]ウィンドウで[新しいプラットフォームを入力または選択してください(P)]のリストボックスから[x64]を選択します。[設定のコピー元(S)]はデフォルト表示されている[x86]を選択したままにし、[新しいプロジェクトプラットフォームを作成する(C)]にチェックをつけます。

新しいソリューション プラットフォームで[x64]を追加
新しいソリューション プラットフォームで[x64]を追加

 [構成マネージャー]を閉じ、再度アプリケーションを実行してみてください。 今度はメッセージボックスに「64ビットで動作中」と表示されるのが確認できます。

 また、64bitか32bitどちらで稼働しているかを確認するには[Windows タスク マネージャー]の[プロセス]一覧からも確認できます。[vshost.exe]が64bitの場合は、以下のようにイメージ名はアプリケーションの実行モジュール名、説明は[vshost.exe]と表示されます。

プロセス一覧からの確認(64bit)
プロセス一覧からの確認(64bit)

 32bitで稼働している場合は、イメージ名の実行モジュール名隣に[*32]と表示され、説明は[vshost32.exe]と表示されます。

プロセス一覧からの確認(32bit)
プロセス一覧からの確認(32bit)

次のページ
64bitアプリケーションで大量データにアクセス

この記事は参考になりましたか?

Oracle Tips連載記事一覧

もっと読む

この記事の著者

日本オラクル 大田(オオタ ヒロシ)

日本オラクル株式会社 Oracle Directテクニカルサービス部所属。開発者の視点から、Oracle Databaseの機能を最大限に活かすための手法を日々研究しながら、プリセールス活動やオンラインセミナー等による情報発信を行う。現在はWindows Server上でのOracle製品活用を推進している。 

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/5914 2011/08/25 16:01

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー