ヘッダーをスキップ
Oracle TimesTen In-Memory Database C開発者ガイド
リリース11.2.1
B56048-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

2 TimesTenアプリケーションのコンパイルおよびリンク

この章では、UNIXおよびWindowsのプラットフォームでTimesTenアプリケーションのコンパイルおよびリンクを行う方法について説明し、クイック・スタート・デモ・アプリケーションを紹介します。内容は次のとおりです。

環境変数の設定

TimesTenの環境変数設定については、『Oracle TimesTen In-Memory Databaseインストレーション・ガイド』の環境変数に関する項を参照してください。

UNIXプラットフォームでは、次のいずれかのスクリプトを実行してTimesTenの環境変数を設定できます。

install_dir/bin/ttenv.sh
install_dir/bin/ttenv.csh

Windowsでは、環境変数は、インストール中に設定するか、または次のスクリプトを実行して設定できます。

install_dir\bin\ttenv.bat

リンク・オプション

TimesTenアプリケーションは、TimesTen Data Manager ODBCドライバまたはTimesTen Client ODBCドライバと直接リンクするか、ドライバ・マネージャとリンクできます。

TimesTen ODBCドライバとの直接リンク

TimesTenのみを使用する必要があるアプリケーションは、TimesTen Data Manager ODBCドライバ、またはTimesTen Client ODBCドライバのいずれかと直接リンクできます。直接リンクを行うと、ドライバ・マネージャのパフォーマンス・オーバーヘッドが回避されます。直接リンクは、TimesTenにアクセスする最も簡単な方法です。 ただし、直接リンクされているアプリケーションを開発する開発者は、直接リンクに関連する次の問題について注意する必要があります。

  • アプリケーションは、リンクされているドライバを使用するDSNにのみ接続できます。 他のベンダーのデータ・ストアには接続できません。また、バージョンまたはタイプが異なるTimesTenドライバのTimesTen DSNにも接続できません。

  • WindowsのODBCトレースは、直接リンクされているアプリケーションでは利用できません。

  • ODBCカーソル・ライブラリは、直接リンクされているアプリケーションでは利用できません。

  • アプリケーションでは、通常ドライバ・マネージャで実行されるODBC関数は使用できません。これらの関数にはSQLDataSourcesおよびSQLDriversが含まれます。

  • SQLFreeStmt(..., SQL_CLOSE)ではなく、SQLCancelを使用してカーソルをクローズするアプリケーションは、SQL_SUCCESS_WITH_INFOのリターン・コードおよびSQL State 01S05を受信します。この警告は、内部の状態をドライバ・マネージャで管理するために使用されます。アプリケーションでは、この警告は成功として処理されます。

ドライバ・マネージャとのリンク

ドライバ・マネージャとリンクしているアプリケーションは、ODBCドライバを参照するすべてのDSNに接続できます。また、様々なODBCドライバを使用する複数のDSNに同時に接続することもできます。ただし、ドライバ・マネージャを使用する場合は、次の制限があります。

  • ドライバ・マネージャを使用すると、すべてのODBC関数コールに同期オーバーヘッドが追加されます。一部のアプリケーションでは、このオーバーヘッドが大量になる場合があります。

  • TimesTenオプションTT_PREFETCH_COUNTは、ドライバ・マネージャにリンクしているアプリケーションでは使用できません。 TT_PREFETCH_COUNTオプションの詳細は、「複数のデータ行のプリフェッチ」を参照してください。

  • アプリケーションでは、TimesTen固有のTT_PREFETCH_CLOSE接続オプションを設定または再設定できません。 TT_PREFETCH_CLOSE接続オプションの詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のシリアライズ可能なトランザクションに対するTT_PREFETCH_CLOSEの有効化に関する項を参照してください。

  • Windows以外のほとんどのプラットフォームでは、ドライバ・マネージャはデフォルトで使用可能ではありません。TimesTenでは、WindowsまたはUNIX用のドライバ・マネージャを用意しており、クイック・スタート・サンプル・アプリケーションが付属しています。

  • アプリケーションがドライブ・マネージャとリンクされている場合、トランザクション・ログAPI(XLA)コールは使用できません。

Windowsでのアプリケーションのコンパイルおよびリンク

WindowsでTimesTenアプリケーションをコンパイルする場合は、ODBC #includeファイルの場所を指定する必要はありません。これらのファイルは、Microsoft Visual C++に含まれています。 ただし、/Iコンパイラ・オプションを使用して、TimesTen #includeファイルの場所を指定する必要があります。

例2-1のMakeファイルでは、WindowsシステムでTimesTenアプリケーションを構築する方法を示します。 この例では、LIB環境変数にinstall_dir\libがすでに追加されたと想定しています。

例2-1 WindowsでのTimesTenアプリケーションの構築

CFLAGS = "/Iinstall_dir\include"
LIBSDM = ODBC32.LIB
LIBS = tten1121.lib ttdv1121.lib
LIBSDEBUG = tten1121d.lib ttdv1121d.lib
LIBSCS = ttclient1121.lib

# Link with the ODBC driver manager
appldm.exe:appl.obj
           $(CC) /Feappldm.exe appl.obj $(LIBSDM)

# Link directly with the TimesTen
# Data Manager ODBC production driver
appl.exe:appl.obj
         $(CC) /Feappl.exe appl.obj\
         $(LIBS)

# Link directly with the TimesTen
# Data Manager ODBC debug driver
appldebug.exe:appl.obj
              $(CC) /Feappldebug.exe appl.obj\
              $(LIBSDEBUG)

# Link directly with the TimesTen
# ODBC Client driver
applcs.exe:appl.obj
           $(CC) /Feapplcs.exe appl.obj\
           $(LIBSCS)

UNIXでのアプリケーションのコンパイルおよびリンク

UNIX Platformsでは、次の処理を行います。

UNIXでは、ULONG、SLONG、USHORTまたはSSHORTのODBCデータ型を使用するアプリケーションは、コンパイル時にTT_USE_ALL_TYPESプリプロセッサ・オプションを指定する必要があります。 通常、これは、Cコンパイラ・オプション-DTT_USE_ALL_TYPESを使用して実行します。

TimesTenの#includeファイルを使用するには、次の指定をCコンパイラ・コマンドに追加します。ここで、install_dirはTimesTenインストール・ディレクトリのパスです。

-Iinstall_dir/include

TimesTen Data Manager ODBCドライバとリンクするには、次の指定をリンク・コマンドに追加します。

-Linstall_dir/lib -ltten

-Lオプションを指定すると、リンカーでライブラリ・ファイル用のTimesTen libディレクトリが検索されます。 -lttenオプションを指定すると、TimesTen Data Manager ODBCドライバでリンクが行われます。

TimesTen Client ODBCドライバとリンクするには、次の指定をリンク・コマンドに追加します。

-Linstall_dir/lib -lttclient

Solarisでは、デフォルトのTimesTen Client ODBCドライバは、Studio 11を使用してコンパイルされます。このライブラリによって、Sun Studio 11 C/C++コンパイラでコンパイルされたアプリケーションをTimesTen Clientに直接リンクできます。

quickstart/sample_codeディレクトリのサブディレクトリでMakeファイルを使用するか、または例2-2を使用して独自のMakeファイルを作成できます。

例2-2 アプリケーションをリンクするMakeファイル

CFLAGS = -Iinstall_dir/include
LIBS = -Linstall_dir/lib -ltten
LIBSDEBUG = -Linstall_dir/lib -lttenD
LIBSCS = -Linstall_dir/lib -lttclient

# Link directly with the TimesTen
# Data Manager ODBC production driver
appl:appl.o
     $(CC) -o appl appl.o $(LIBS)

# Link directly with the TimesTen ODBC debug driver
appldebug:appl.o
     $(CC) -o appldebug appl.o $(LIBSDEBUG)

# Link directly with the TimesTen Client driver
applcs:appl.o
     $(CC) -o applcs appl.o $(LIBSCS)

注意:

  • アプリケーションをTimesTen Data ManagerデバッグODBCドライバに直接リンクするには、リンク行に-lttenのかわりに-lttenDを指定します。

  • Solarisでは、Sun C/C++コンパイラを使用してコンパイルを実行した場合、-mtオプションを使用してTimesTenアプリケーションのコンパイルおよびリンクを実行する必要があります。


リンク・オプションのテスト

アプリケーションが直接リンクされたかどうかをテストするには、例2-3に示すように、SQLGetInfoをコールし、データ・ストア接続ハンドルのドライバ・リリースを確認します。

直接リンクされているアプリケーションの場合、SQLGetInfoをコールすると変更されていない接続ハンドルが返されます。 ドライバ・マネージャを使用するアプリケーションの場合、返される接続ハンドルは渡したハンドルと異なります。

例2-3 アプリケーションが直接リンクされているかどうかのテスト

RetCode = SQLDriverConnect(hdbc,NULL,szConnString,
     SQL_NTS,szConnout,255,&cbConnOut,SQL_DRIVER_NOPROMPT);
rc = SQLGetInfo(hdbc, SQL_DRIVER_HDBC, &drhdbc,
     sizeof (drhdbc), &drhdbclen);
if (drhdbc != NULL && drhdbc != hdbc) {
     /* Linked with driver manager */
}
else {
     /* Directly linked with TimesTen driver */
}

TimesTen Cのデモについて

C環境を構成した後、TimesTenクイック・スタート・デモ・アプリケーションをコンパイルおよび実行して、すべてが正しく設定されていることを確認できます。 次のトピックの詳細は、クイック・スタートのようこそページ(install_dir/quickstart.html)で、特にサンプル・プログラムの下のリンクを参照してください。