OpenSQLConnection[src]
名前付きデータソースへの接続を作成する.
JDBCオブジェクトが記述するデータソースへの接続を作成する.
名前付きデータソースを作成・管理するためのGUIを開く.
OpenSQLConnection
OpenSQLConnection[src]
名前付きデータソースへの接続を作成する.
JDBCオブジェクトが記述するデータソースへの接続を作成する.
名前付きデータソースを作成・管理するためのGUIを開く.
詳細とオプション
- OpenSQLConnectionを使うためには,まずNeeds["DatabaseLink`"]を使って DatabaseLink をロードする必要がある.
- 使用可能なオプション
-
"Name" "" 接続名 "Description" "" 接続についてのテキストによる記述 "Username" "" 接続に使用するユーザ名 "Password" "" 接続に使用するパスワード "Location" "" 接続を定義しているファイルの場所 "Catalog" Automatic データベースカタログの場所 "Properties" {} JDBCドライバに渡される,規則として表されたキーと値のペア "ReadOnly" Automatic 接続を読取り専用に設定する "RelativePath" False データベースの場所が設定に相対的に指定されているかどうかを示す(ファイルベースのデータベースについて) "Timeout" $SQLTimeout 操作に対するタイムアウト設定(秒) "TransactionIsolationLevel" Automatic 接続にトランザクション分離を設定する "UseConnectionPool" Automatic 管理されたプールから接続を開く "Version" None 設定ファイルのバージョン
例題
すべて開く すべて閉じる例 (1)
Needs["DatabaseLink`"]このセクションの例を実際に試してみて,記載の通りに動作しなかった場合は,データベースの例の使用で述べているように"DatabaseLink`DatabaseExamples`"パッケージを使ってデータベースをインストールするか,もとの状態に戻す必要がある可能性がある.
conn = OpenSQLConnection["demo"]JDBCを使って指定のデータソースへの接続を開く:
conn = OpenSQLConnection[ JDBC["HSQL(Standalone)", ToFileName[{$UserBaseDirectory, "DatabaseResources", "Examples"}, "demo"] ],
"Name" -> "manualA", "Username" -> "sa"]CloseSQLConnection[conn];conn = OpenSQLConnection[]CloseSQLConnection[conn];このセクションの例を実際に試してみて,記載の通りに動作しなかった場合は,データベースの例の使用で述べているように"DatabaseLink`DatabaseExamples`"パッケージを使ってデータベースをインストールするか,もとの状態に戻す必要がある可能性がある.
オプション (9)
"Username" (1)
"Password" (1)
Needs["DatabaseLink`"]conn = OpenSQLConnection["demo", "Username" -> "sa", "Password" -> ""]CloseSQLConnection[conn];conn = OpenSQLConnection["demo", "Username" -> "sa", "Password" -> "$Prompt"]CloseSQLConnection[conn];"Catalog" (1)
Needs["DatabaseLink`"]カタログの実装はRDBMSのタイプとそのドライバによって大きく異なる.例えばMySQLでは,"Catalog"はでデータベースを指定するのに使うことができる.localhost上にインストールされたMySQLのデータベースsandboxに接続する:
conn = OpenSQLConnection[JDBC["MySQL(Connector/J)", "localhost"], "Username" -> "guest", "Password" -> "guest", "Catalog" -> "sandbox"]DatabaseLink`SQLConnection[DatabaseLink`JDBC["MySQL(Connector/J)", "localhost"],
JLink`Objects`vm1`JavaObject3410209317847041, 2, "Catalog" -> "sandbox", "Description" -> None,
"Location" -> None, "Name" -> None, "Password" -> "Marflow17", "Properties" -> {},
"ReadOnly" -> Automatic, "RelativePath" -> False, "TransactionIsolationLevel" -> Automatic,
"UseConnectionPool" -> Automatic, "Username" -> "root", "Version" -> None]CloseSQLConnection[conn];conn = OpenSQLConnection[JDBC["MySQL(Connector/J)", "localhost/sandbox"], "Username" -> "guest", "Password" -> "guest"]DatabaseLink`SQLConnection[DatabaseLink`JDBC["MySQL(Connector/J)", "localhost/sandbox"],
JLink`Objects`vm1`JavaObject7161744753426433, 3, "Catalog" -> Automatic, "Description" -> None,
"Location" -> None, "Name" -> None, "Password" -> "Marflow17", "Properties" -> {},
"ReadOnly" -> Automatic, "RelativePath" -> False, "TransactionIsolationLevel" -> Automatic,
"UseConnectionPool" -> Automatic, "Username" -> "root", "Version" -> None]CloseSQLConnection[conn];"Properties" (1)
Needs["DatabaseLink`"]"Properties"オプションを使うと,JDBCドライバにその他の設定を渡すことができる.例えばDerbyでは,存在しないデータベースに対しては特性"create"を"true"に設定する必要がある:
conn = OpenSQLConnection[JDBC["Derby(Embedded)", FileNameJoin[{$TemporaryDirectory, "posts1"}]]]conn = OpenSQLConnection[JDBC["Derby(Embedded)", FileNameJoin[{$TemporaryDirectory, "posts1"}]], "Properties" -> {"create" -> "true"}]CloseSQLConnection[conn];
DeleteDirectory[FileNameJoin[{$TemporaryDirectory, "posts1"}], DeleteContents -> True]conn = OpenSQLConnection[JDBC["Derby(Embedded)", FileNameJoin[{$TemporaryDirectory, "posts2"}] <> ";create=true;"]]CloseSQLConnection[conn];
DeleteDirectory[FileNameJoin[{$TemporaryDirectory, "posts2"}], DeleteContents -> True]"ReadOnly" (1)
Needs["DatabaseLink`"]読取り専用の接続では,表やレコードを変更したり作成したりすることはできない:
conn = OpenSQLConnection[JDBC["HSQL(Memory)", "scratchpad"], "ReadOnly" -> True]SQLCreateTable[conn,
SQLTable["A"], {SQLColumn["A1", "DataTypeName" -> "VARCHAR(128)"]}
]CloseSQLConnection[conn];"RelativePath" (1)
Needs["DatabaseLink`"]ファイルベースのデータベースでは,リソースへの提供されたパスは,絶対パスでない場合は,現在の作業ディレクトリに対する相対パスであると解釈される."RelativePath"オプションを使って,指定の場所に対する相対パスとして解釈させる:
conn = OpenSQLConnection[JDBC["SQLite", "interactions.db"], "Location" -> $TemporaryDirectory, "RelativePath" -> True]FileNames["interactions.db", $TemporaryDirectory]CloseSQLConnection[conn];
DeleteFile[FileNameJoin[{$TemporaryDirectory, "interactions.db"}]]"Timeout" (1)
Needs["DatabaseLink`"]接続の試みは$SQLTimeout秒でタイムアウトとなる.$SQLTimeoutにはドライバによって異なるデフォルト値がある."Timeout"オプションを使うと,整数値の秒数をでオーバーライドできる:
AbsoluteTiming@OpenSQLConnection[JDBC["PostgreSQL", "1.2.3.4/nonexistent"], "Timeout" -> 5]"TransactionIsolationLevel" (1)
Needs["DatabaseLink`"]開いている接続のトランザクションは,ドライバ依存のデフォルトを使って分離される.オプションで"ReadUncommitted","ReadCommitted","RepeatableRead","Serializable"のうちの一つを指定してオーバーライドする:
c1 = OpenSQLConnection["publisher", "TransactionIsolationLevel" -> Automatic]c2 = OpenSQLConnection["publisher", "TransactionIsolationLevel" -> "Serializable"]c3 = OpenSQLConnection["publisher", "TransactionIsolationLevel" -> "RepeatableRead"]CloseSQLConnection /@ {c1, c2, c3};トランザクションと分離レベルの詳細はトランザクションチュートリアルを参照されたい.
"UseConnectionPool" (1)
Needs["DatabaseLink`"]"UseConnectionPool"オプションを使って,管理されたプールの接続を開くように設定する.プールが存在しない場合は作成される:
conn = OpenSQLConnection["demo", "UseConnectionPool" -> True]SQLConnectionPools[conn]SQLConnectionPoolClose[SQLConnectionPools[conn]]接続プールについての詳細情報は接続プールチュートリアルを参照されたい.
考えられる問題 (2)
Needs["DatabaseLink`"]すべてのJDBCドライバがタイムアウト関連のメソッドを実装しているわけではない."Timeout"オプションを設定しても,特定のドライバには影響を及ぼさない:
AbsoluteTiming@OpenSQLConnection[JDBC["MySQL(Connector/J)", "1.2.3.4/nonexistent"], "Timeout" -> 1]Needs["DatabaseLink`"]すべてのJDBCドライバが"TransactionIsolationLevel"オプションに可能なすべての設定を実装しているわけではない.開いている接続がデフォルトの分離レベルに戻る:
conn = OpenSQLConnection["publisher", "TransactionIsolationLevel" -> "ReadUncommitted"]CloseSQLConnection[conn];