最後に「64-bit ODP.NET」からOracle Databaseに接続するコードを記述します。フォームに追加した[Button]コントロールの[Click]イベントに以下のコードを追記します。
// 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);
}
}
}
}
'// 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]イベントに追加します。
// 以下の名前空間を追加
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ビットで動作中");
}
}
}
}
'// 以下の名前空間を追加
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]を追加](http://cz-cdn.shoeisha.jp/static/images/article/5914/5914_fig9.gif)
[構成マネージャー]を閉じ、再度アプリケーションを実行してみてください。 今度はメッセージボックスに「64ビットで動作中」と表示されるのが確認できます。
また、64bitか32bitどちらで稼働しているかを確認するには[Windows タスク マネージャー]の[プロセス]一覧からも確認できます。[vshost.exe]が64bitの場合は、以下のようにイメージ名はアプリケーションの実行モジュール名、説明は[vshost.exe]と表示されます。
32bitで稼働している場合は、イメージ名の実行モジュール名隣に[*32]と表示され、説明は[vshost32.exe]と表示されます。



