データベース接続
データベースを使い始めるには,まず接続を開始する.ここでは,これをどのように行うかについて述べる.
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接続についての詳細情報 |
| In[1]:= |
これで,ドキュメントのために DatabaseLink に含まれている名前付きデータベース demo に接続できる.新しい名前付き接続の設定方法については「データベースのリソース:接続設定」を,既存の名前付き接続については「データベース接続:名前付き接続」を参照のこと.
OpenSQLConnectionは,接続を参照するMathematica 式を返す.これはデータベースにクエリを行うのに使える.
| In[2]:= |
| Out[2]= |
SQLConnectionsは開いている接続のリストを返す.
| In[3]:= |
| Out[3]= |
| In[4]:= |
| Out[4]= |
接続の使用が終ったら,CloseSQLConnectionで閉じる.
| In[5]:= |
| In[6]:= |
| Out[6]= |
OpenSQLConnectionには数々のオプションが使える.
オプション名 | デフォルト値 | |
| "Description" | "" | 接続についてのテキストによる記述 |
| "Name" | "" | 接続名 |
| "Username" | "" | 接続に使用するユーザ名 |
| "Password" | "" | 接続に使用するパスワード |
| "Catalog" | Automatic | データベースカタログの場所 |
| "ReadOnly" | Automatic | |
| "TransactionIsolationLevel" | Automatic | 接続にトランザクション分離を設定する |
OpenSQLConnectionのオプション
これらのオプションは,接続を開始するときに使える.以下の例のようにすると,異なるユーザ名とパスワードが使える.
| In[7]:= |
| Out[7]= |
| In[8]:= |
パスワードに
と入力すると,ダイアログボックスが開き,そこにパスワードを入力する.これにより,パスワード入力がより安全になる.
| In[9]:= |
| Out[9]= |
接続が開始したら,SetOptionsを使って特定のオプションを変更することができる.
データベースに読取り専用アクセスのみできるように接続を変更する.
| In[10]:= |
| Out[10]= |
| In[11]:= |
オプションについての詳細は「トランザクション:トランザクション分離」を参照されたい.
接続の情報
接続についての詳細情報はSQLConnectionInformationから得られる.以下に例を示す.
| In[12]:= |
| In[13]:= |
| Out[13]= |
| In[14]:= |
| In[15]:= |
Out[15]//TableForm= | |
![]() | |
JDBC接続
名前付きデータベース接続がない場合でも,JDBC設定を使ってデータベースに接続できる.
このセクションの例を実際に試してみて,記載の通りに動作しなかった場合は,「データベースの例の使用」で述べているように
パッケージを使ってデータベースをもとの状態に戻す必要があるかもしれない.
| JDBC[name,url] | JDBC設定 |
| JDBC[classname,url] | 明示的にドライバのクラス名を与えるJDBC設定 |
| JDBCDriverNames[] | 可能なJDBCドライバの名前のリスト |
| JDBCDrivers[] | すべてのJDBCドライバの詳細情報 |
| JDBCDrivers[name] | JDBCドライバ name の詳細情報 |
| In[16]:= |
次にファイル$UserBaseDirectory/DatabaseResources/Examples/demoを使ってHSQLDBに接続を開始する.このように接続が開始できるのは,パッケージがHSQLDBへの接続にどのJDBCドライバを使うべきかを知っているからである.
| In[17]:= |
| Out[17]= |
| In[18]:= |
JDBCDriverNames コマンドは組込みドライバのリストを返す.hsqldbもこのリストに含まれているため,JDBCの引数にhsqldb設定が使える.
| In[15]:= |
| Out[15]= | ![]() |
JDBCDriversを使うと,すべての組込みドライバに関する詳細情報が得られる.
1つのドライバに関しての情報のみが必要な場合は,JDBCDriversにその名前を渡す.ドライバに設定されているプロトコルを確認すると,OpenSQLConnectionを使う手助けとなる.
| In[16]:= |
| 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ドライバのドキュメントを参照のこと.
これはOpenSQLConnectionの最も詳しいバージョンである.通常は以前に保存した情報を利用した方がよいでであろう.これについては「データベースのリソース」に記載されている.
ODBC接続
ODBC (Open Database Connectivity)は,SQLデータベースに接続する一般的な方法で,特にMicrosoft Windows等,多くのオペレーティングシステムでサポートされている.DatabaseLink にはODBC接続用のドライバ設定が含まれている.以下はODBCを使って例題用データベースに接続する例で,Windowsでのみ動作する.
接続の設定
この例では,DatabaseLink パッケージ構造の中にあるサンプルデータベースファイルpublisher.mdbを使う.お使いのコンピュータで次の行を実行すると,ファイルの場所が分かる.
| In[15]:= |
| Out[16]= |
一般に,DatabaseLink の中のファイルを編集することはお勧めしない.ファイルを別の場所にコピーするとよい.コピーすることのできる場所は$UserBaseDirectoryの中のDatabaseResources/Examplesディレクトリ内である(まずこのディレクトリを作る必要があるかもしれない).このディレクトリの場所を見付けるには,使用中のコンピュータで以下を実行する.
| In[17]:= |
| Out[17]= |
publisher.mdbファイルはExamplesサブディレクトリの中にある.
ここでODBCコントロールパネルを使ってデータソースを登録する.これは通常Windowsコントロールパネルの管理ツールにある.これを開くと,次のようなウィンドウが現れる.
「追加」ボタンをクリックするとデータソースの新規作成ウィンドウが開く.
Microsoft Access Driverを選び,「完了」をクリックする.ODBC Microsoft Accessセットアップウィンドウが開く.
データソース名テキストフィールドに「publisher」と入力する.これはODBCが使用する名前となる.「選択」ボタンをクリックすると,publisher.mdbファイルを探して選択することができる.
すべてのウィンドウで「OK」をクリックして,最後にコントロールパネルを閉じる.これで,publisherとそのドライバがODBCデータソースアドミニストレータウィンドウに現れる.
接続の使用
これで,設定したODBCデータソースに接続できる.DatabaseLink をロードし,ODBCデータソース publisher に接続する.これにはパッケージが設定したODBCドライバを使う.
| In[17]:= |
| In[19]:= |
| Out[19]= |
| In[20]:= |
Out[20]//TableForm= | |
![]() | |
| In[21]:= |
名前付き接続
同じデータベースに頻繁にアクセスする必要がある場合は,接続に名前を付けて,その名前をOpenSQLConnectionで使うと便利なことがある.名前付き接続の設定方法の詳細は「データベースのリソース」を参照されたい.本セクションでは,どの名前付き接続が使用できるかについて述べる.
| DataSourceNames[] | すべての接続の名前のリスト |
| DataSources[] | すべての名前付き接続の詳細情報 |
| DataSources[name] | 接続 name の詳細情報 |
| In[23]:= |
名前付き接続をすべてリストする.他にも接続がインストールされている場合は,リストが以下の例より長くなる.
| In[24]:= |
| Out[24]= |
DataSourcesを使うと,すべての接続についての詳細情報が得られる.
| In[2]:= |
| Out[2]= | ![]() |
DataSourcesに引数 name を渡すと,特定の1つの名前付き接続についての情報が得られる.
| In[3]:= |
| Out[3]= | ![]() |
データベースのタイムアウト
一般に,データベース操作を行うときはサーバに接続するので,サーバ接続の際に生じる問題の可能性も考える必要がある.そのため,接続やクエリの実行等のデータベース操作に対するタイムアウトが用意されている.タイムアウトはグローバル変数$SQLTimeoutで設定する.
オプション名 | デフォルト値 | |
| $SQLTimeout | Automatic | 接続の開始およびクエリの実行の際のタイムアウト |
デフォルト値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」を参照されたい.








