データベース接続

データベースを使い始めるには,まず接続を開始する.ここでは,これをどのように行うかについて述べる.

DatabaseLink を使い始めたばかりの方は,このチュートリアルにある基本的な例題をいくつか試されるとよいだろう.また,お持ちのデータベースのドライバが DatabaseLink に含まれているかどうかについては「データベース接続:JDBC接続」を参照されたい.新しいドライバの追加方法についての詳細情報が記載されている.接続に名前を付ける方法については「データベース接続:名前付き接続」を参照されたい.

データベースの設定

DatabaseLink のユーザの多くは,接続して使いたいとデータベースがあるだろう.そのようなデータベースがある場合は,このドキュメントの手順をそのデータベースに合わせて変更して使うことができる.データベースがない場合は,DatabaseLink に含まれているHSQLDBが利用できる.別の種類のデータベースを設定したいときは,そのデータベースについての情報を参照されたい.データベースを設定し終えたら,このドキュメントを使って接続方法が学べる.

接続の確立

このセクションの例を実際に試してみて,記載の通りに動作しなかった場合は,「データベースの例の使用」で述べているようにパッケージを使ってデータベースをもとの状態に戻す必要があるかもしれない.

OpenSQLConnection[name]名前付きSQLデータソースに接続する
OpenSQLConnection[JDBC[driver,url]]JDBCを使ってデータソースURLに接続する
OpenSQLConnection[args,opts]接続のオプションを設定する
OpenSQLConnection[]Connection Toolを使って接続を開始する
CloseSQLConnection[conn]接続を閉じる
SQLConnections[]SQL接続をリストする
SQLConnectionInformation[conn]SQL接続についての詳細情報

データベース接続のための関数

DatabaseLink をロードする.

In[1]:=
Click for copyable input

これで,ドキュメントのために DatabaseLink に含まれている名前付きデータベース demo に接続できる.新しい名前付き接続の設定方法については「データベースのリソース:接続設定」を,既存の名前付き接続については「データベース接続:名前付き接続」を参照のこと.

OpenSQLConnectionは,接続を参照するMathematica 式を返す.これはデータベースにクエリを行うのに使える.

In[2]:=
Click for copyable input
Out[2]=

SQLConnectionsは開いている接続のリストを返す.

In[3]:=
Click for copyable input
Out[3]=

次の例では,データベース中の表が返される.

In[4]:=
Click for copyable input
Out[4]=

接続の使用が終ったら,CloseSQLConnectionで閉じる.

In[5]:=
Click for copyable input
In[6]:=
Click for copyable input
Out[6]=

OpenSQLConnectionには数々のオプションが使える.

オプション名
デフォルト値
"Description"""接続についてのテキストによる記述
"Name"""接続名
"Username"""接続に使用するユーザ名
"Password"""接続に使用するパスワード
"Catalog"Automaticデータベースカタログの場所
"ReadOnly"Automatic接続を読取り専用に設定する
"TransactionIsolationLevel"Automatic接続にトランザクション分離を設定する

OpenSQLConnectionのオプション

これらのオプションは,接続を開始するときに使える.以下の例のようにすると,異なるユーザ名とパスワードが使える.

In[7]:=
Click for copyable input
Out[7]=
In[8]:=
Click for copyable input

パスワードにと入力すると,ダイアログボックスが開き,そこにパスワードを入力する.これにより,パスワード入力がより安全になる.

In[9]:=
Click for copyable input
Out[9]=

接続が開始したら,SetOptionsを使って特定のオプションを変更することができる.

"Catalog"データベースカタログの場所
"ReadOnly"読取り専用として開くかどうか
"TransactionIsolationLevel"トランザクション分離を加えるかどうか

接続後に変更できる接続オプション

データベースに読取り専用アクセスのみできるように接続を変更する.

In[10]:=
Click for copyable input
Out[10]=
In[11]:=
Click for copyable input

オプションについての詳細は「トランザクション:トランザクション分離」を参照されたい.

接続の情報

接続についての詳細情報はSQLConnectionInformationから得られる.以下に例を示す.

In[12]:=
Click for copyable input

サンプルデータベースへの接続を開始する.

In[13]:=
Click for copyable input
Out[13]=

接続についての情報を作成する.

In[14]:=
Click for copyable input

接続についてのより整理された情報を表示する.

In[15]:=
Click for copyable input
Out[15]//TableForm=

JDBC接続

名前付きデータベース接続がない場合でも,JDBC設定を使ってデータベースに接続できる.

このセクションの例を実際に試してみて,記載の通りに動作しなかった場合は,「データベースの例の使用」で述べているようにパッケージを使ってデータベースをもとの状態に戻す必要があるかもしれない.

JDBC[name,url]JDBC設定
JDBC[classname,url]明示的にドライバのクラス名を与えるJDBC設定
JDBCDriverNames[]可能なJDBCドライバの名前のリスト
JDBCDrivers[]すべてのJDBCドライバの詳細情報
JDBCDrivers[name]JDBCドライバ name の詳細情報

パッケージをロードする.

In[16]:=
Click for copyable input

次にファイル$UserBaseDirectory/DatabaseResources/Examples/demoを使ってHSQLDBに接続を開始する.このように接続が開始できるのは,パッケージがHSQLDBへの接続にどのJDBCドライバを使うべきかを知っているからである.

In[17]:=
Click for copyable input
Out[17]=
In[18]:=
Click for copyable input

JDBCDriverNames コマンドは組込みドライバのリストを返す.hsqldbもこのリストに含まれているため,JDBCの引数にhsqldb設定が使える.

In[15]:=
Click for copyable input
Out[15]=

JDBCDriversを使うと,すべての組込みドライバに関する詳細情報が得られる.

1つのドライバに関しての情報のみが必要な場合は,JDBCDriversにその名前を渡す.ドライバに設定されているプロトコルを確認すると,OpenSQLConnectionを使う手助けとなる.

In[16]:=
Click for copyable input
Out[16]=

組込みドライバの設定方法については「データベースのリソース」を参照のこと.

DatabaseLink に含まれていないデータベースドライバを追加することもできる.ドライバはJavaクラスコレクションであり,J/Link が提供しているクラスを追加する標準の方法を使って Mathematica に加える必要がある.一般には,クラスファイルかjarファイルを Mathematica のJavaサブディレクトリに追加する.可能な場所の一つに DatabaseLink の中がありますが,ソフトウェアを更新した場合に新しくドライバをコピーしなければならないという問題もある.別の場所として,$UserBaseDirectoryまたは$BaseDirectoryの中のアプリケーションの中が挙げられる.この場所だと,ソフトウェアを更新しても設定を変更する必要がない.

例えば,Oracleデータベースに接続できるアプリケーションが作れる.この場合,$UserBaseDirectory/Applicationsまたは$BaseDirectory/Applicationsの中にOracleというアプリケーションを作る.手動でいくつかのディレクトリを作らなければならないかもしれないが,ソフトウェアをアップデートしても変更を加える必要はない.もう一つの利点に,DatabaseResourcesディレクトリにも同じ場所が使えるということが挙げられる.これは「データベースのリソース」で述べるように,別の設定情報が保管できる.

次の表に,Oracleに接続するためのドライバがインストールできる場所をまとめる.

$UserBaseDirectory/Applications/Oracle/Javaデータベースドライバのクラスファイルの場所
$BaseDirectory/Applications/Oracle/Javaデータベースドライバのクラスファイルの場所

データベースドライバクラスファイルの可能な場所

ドライバクラスをインストールしたら,接続を開始することができる.引数のURLは,使用中のサーバによって変更する.次の例では,上記の場所の一つにインストールしたドライバを使ってOracleデータベースに接続する(実際には設定しない).使用するクラスとURLについてはJDBCドライバのドキュメントを参照のこと.

Click for copyable input

これはOpenSQLConnectionの最も詳しいバージョンである.通常は以前に保存した情報を利用した方がよいでであろう.これについては「データベースのリソース」に記載されている.

ODBC接続

ODBC (Open Database Connectivity)は,SQLデータベースに接続する一般的な方法で,特にMicrosoft Windows等,多くのオペレーティングシステムでサポートされている.DatabaseLink にはODBC接続用のドライバ設定が含まれている.以下はODBCを使って例題用データベースに接続する例で,Windowsでのみ動作する.

接続の設定

この例では,DatabaseLink パッケージ構造の中にあるサンプルデータベースファイルpublisher.mdbを使う.お使いのコンピュータで次の行を実行すると,ファイルの場所が分かる.

In[15]:=
Click for copyable input
Out[16]=

一般に,DatabaseLink の中のファイルを編集することはお勧めしない.ファイルを別の場所にコピーするとよい.コピーすることのできる場所は$UserBaseDirectoryの中のDatabaseResources/Examplesディレクトリ内である(まずこのディレクトリを作る必要があるかもしれない).このディレクトリの場所を見付けるには,使用中のコンピュータで以下を実行する.

In[17]:=
Click for copyable input
Out[17]=

publisher.mdbファイルはExamplesサブディレクトリの中にある.

ここでODBCコントロールパネルを使ってデータソースを登録する.これは通常Windowsコントロールパネル管理ツールにある.これを開くと,次のようなウィンドウが現れる.

6.gif

「追加」ボタンをクリックするとデータソースの新規作成ウィンドウが開く.

7.gif

Microsoft Access Driverを選び,「完了」をクリックする.ODBC Microsoft Accessセットアップウィンドウが開く.

8.gif

データソース名テキストフィールドに「publisher」と入力する.これはODBCが使用する名前となる.「選択」ボタンをクリックすると,publisher.mdbファイルを探して選択することができる.

9.gif

すべてのウィンドウで「OK」をクリックして,最後にコントロールパネルを閉じる.これで,publisherとそのドライバがODBCデータソースアドミニストレータウィンドウに現れる.

接続の使用

これで,設定したODBCデータソースに接続できる.DatabaseLink をロードし,ODBCデータソース publisher に接続する.これにはパッケージが設定したODBCドライバを使う.

In[17]:=
Click for copyable input

接続はデータベースのクエリに使用できる.

In[19]:=
Click for copyable input
Out[19]=
In[20]:=
Click for copyable input
Out[20]//TableForm=

接続を閉じる.

In[21]:=
Click for copyable input

名前付き接続

同じデータベースに頻繁にアクセスする必要がある場合は,接続に名前を付けて,その名前をOpenSQLConnectionで使うと便利なことがある.名前付き接続の設定方法の詳細は「データベースのリソース」を参照されたい.本セクションでは,どの名前付き接続が使用できるかについて述べる.

DataSourceNames[]すべての接続の名前のリスト
DataSources[]すべての名前付き接続の詳細情報
DataSources[name]接続 name の詳細情報

名前付き接続に使用する関数

パッケージをロードする.

In[23]:=
Click for copyable input

名前付き接続をすべてリストする.他にも接続がインストールされている場合は,リストが以下の例より長くなる.

In[24]:=
Click for copyable input
Out[24]=

DataSourcesを使うと,すべての接続についての詳細情報が得られる.

In[2]:=
Click for copyable input
Out[2]=

DataSourcesに引数 name を渡すと,特定の1つの名前付き接続についての情報が得られる.

In[3]:=
Click for copyable input
Out[3]=

データベースのタイムアウト

一般に,データベース操作を行うときはサーバに接続するので,サーバ接続の際に生じる問題の可能性も考える必要がある.そのため,接続やクエリの実行等のデータベース操作に対するタイムアウトが用意されている.タイムアウトはグローバル変数$SQLTimeoutで設定する.

オプション名
デフォルト値
$SQLTimeoutAutomatic接続の開始およびクエリの実行の際のタイムアウト

データベース使用時のタイムアウトの指定

デフォルト値Automaticで,これはドライバに与えられたデフォルト値が使われることを意味する.

接続の例

このセクションでは,いくつかの接続コマンドを示し,どのように使うか説明する.

次の例では,ユーザtestで,組込みドライバを使ってdatabasesという名前のコンピュータのポート1234で実行中のMySQLデータベースconn_testに接続する.

次も上の例と同じMySQLデータベースに接続するが,ドライバにはcom.mysql.jdbc.Driverを使う.

最初の例では,「データベースのリソース:JDBCの設定」に記載のようにJDBC接続mysqlを設定した.2つ目の例ではDatabaseResourcesの設定は必要ない.しかしJDBCドライバcom.mysql.jdbc.Driverが使用できなければならない.ドライバについての詳細は「データベース接続:JDBC接続」を参照のこと.

Connection Tool

Connection Toolはデータベースへの接続が簡単に開けるグラフィカルインターフェースツールである.これはコマンドOpenSQLConnection[]を実行して起動する.これについては「Database Explorer:Connection Tool」を参照されたい.

New to Mathematica? Find your learning path »
Have a question? Ask support »