データソース

From Apache OpenOffice Wiki
Jump to: navigation, search
doc OOo
Book.png


データベースの Apache OpenOffice への組み込みは、いわゆるデータソースと呼ばれるものを作成することにより実施できます。ユーザーインターフェースのデータソース作成用オプションは、メニュー ツールに用意されています。データソースを作成し、Apache OpenOffice Basic を使用して操作することもできます。

データソースへのアクセスを行う場合、まず最初に createUnoService 関数によるデータベースコンテキストオブジェクトの作成を行う必要があります。これはデータベース処理のルートオブジェクトとして機能するもので、その操作には com.sun.star.sdb.DatabaseContext サービスを利用します。

次のサンプルコードでは、データベースコンテキストの作成方法、および使用可能なすべてのデータソースの取得方法を示します。ここで取得した名前は、逐次メッセージボックスに表示します。

Dim DatabaseContext As Object
Dim Names
Dim I As Integer
 
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
 
Names = DatabaseContext.getElementNames()
 
For I = 0 To UBound(Names())
  MsgBox Names(I)
Next I

個々のデータソースは com.sun.star.sdb.DataSource サービスをベースとしており、データベースコンテキストに getByName メソッドを適用することで各データソースを個別に指定できます。

Dim DatabaseContext As Object
Dim DataSource As Object
 
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
DataSource = DatabaseContext.getByName("Customers")

上記のサンプルコードでは、Customers というデータソース名を指定して、その DataSource オブジェクトを作成しています。

データソースには各種の属性が用意されており、これらを通じてデータの出自やアクセス方式などの一般的な情報を取得することができます。以下にこれらの属性を 示します。

Name (String)
データソースの名前。
URL (String)
URL (文字列) データソースの URL (フォーマットは jdbc: サブプロトコル : サブネームまたは sdbc: サブプロトコル : サブネーム)。
Settings (Array)
接続パラメータを持つ PropertyValue ペアを含む配列 (通常はユーザー名とパスワードが最低必要)。
User (String)
ユーザー名。
Password (String)
ユーザーパスワード (保存されません)。
IsPasswordRequired (Boolean)
ユーザーに対してパスワードを要求する指定。
IsReadOnly (Boolean)
データベースへの読み取り専用アクセスを許可。
NumberFormatsSupplier (Object)
データベースに使用可能な数値書式を含むオブジェクト (com.sun.star.util.XNumberFormatsSupplier インターフェースをサポート)。
TableFilter (Array)
表示させるテーブル名のリスト。
TableTypeFilter (Array)
表示させるテーブルの種類のリスト。使用可能な値: TABLEVIEW および SYSTEM TABLE
SuppressVersionColumns (Boolean)
バージョン管理用の列を非表示とする指定。
Documentation note.png Apache OpenOffice のデータソースと ODBC のデータソースは、一対一に対応するわけではありません。ODBC のデータソースがデータの出自のみを対象としているのに対して、Apache OpenOffice のデータソースでは、Apache OpenOffice のデータベースウィンドウでのデータ表示といった、より広範な情報も格納しています。

クエリー

データソースに対しては、事前定義されたクエリーを利用できます。Apache OpenOffice は、SQL のクエリーコマンドを記録して、随時利用できるようにしています。クエリーとは、データベースの利用を簡単化する目的で開発されたもので、SQL に関する専門的な知識をもたないユーザーでも、マウスによるクリック操作のみで SQL コマンドの実行に必要な各種オプションを指定できます。

クエリーを使用する場合、com.sun.star.sdb.QueryDefinition サービスをサポートしたオブジェクトを直接操作する必要はありません。クエリーへのアクセスは、該当するデータソースに対して QueryDefinitions メソッドを適用することにより実行できます。

次のサンプルコードでは、データソースに記録されているクエリー名の一覧を取得して、逐次メッセージボックスに表示します。

Dim DatabaseContext As Object
Dim DataSource As Object
Dim QueryDefinitions As Object
Dim QueryDefinition As Object
Dim I As Integer
 
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
DataSource = DatabaseContext.getByName("Customers")
QueryDefinitions = DataSource.getQueryDefinitions()
 
For I = 0 To QueryDefinitions.Count() - 1
  QueryDefinition = QueryDefinitions(I)
  MsgBox QueryDefinition.Name
Next I

com.sun.star.sdb.QueryDefinition サービスには、上記のサンプルコードで使用した Name 属性をはじめとする各種の属性が用意されています。以下にその属性を示します。

Name (String)
クエリー名。
Command (String)
SQL コマンド (通常 SELECT コマンド)。

次のサンプルコードは、プログラム制御によるクエリーオブジェクトの作成およびデータソースへの登録を行う場合の例です。

Dim DatabaseContext As Object
Dim DataSource As Object
Dim QueryDefinitions As Object
Dim QueryDefinition As Object
Dim I As Integer
 
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
DataSource = DatabaseContext.getByName("Customers")
QueryDefinitions = DataSource.getQueryDefinitions()
QueryDefinition = createUnoService("com.sun.star.sdb.QueryDefinition")
QueryDefinition.Command = "SELECT * FROM Customer"
QueryDefinitions.insertByName("NewQuery", QueryDefinition)

この場合の処理の流れは、まず最初に createUnoService を用いてクエリーオブジェクトを作成し、次にその初期化を行い、最後に insertByName メソッドにより QueryDefinitions オブジェクトへ追加します。


Content on this page is licensed under the Public Documentation License (PDL).
Personal tools