OpenOffice.org Basic > OpenOffice.org Base Basic


OpenOffice.org データベースソフト Base を用いるためのマクロの解説。また、外部データベースを用いるためのマクロも、ここで解説する。

公式プログラミングガイド 編集

Sun StarSuite 8 Basic プログラミングガイド


BASE に接続する 編集

BASE (HSQLDB) データベースに接続するために、StarSuite APIのcom.sun.star.sdb.DatabaseContextサービスを用いる。


接続 編集

OpenOffice Calcなど、BASE以外の環境からBASEを開いて作業する場合の例。

Dim DatabaseContext as object
Dim DataSource as Object
Dim Connection as Object
Dim Statement as Object
Dim ResultSet as Object

 ' ***** データベースを開く  *****
DatabaseContext=createUnoService("com.sun.star.sdb.DatabaseContext") 
' DataBase_Test.odb というBASEファイルを開く
DataSource=DatabaseContext.getByName("DataBase_Test") 
' ユーザ名、パスワードを空白で接続
Connection = DataSource.GetConnection("","")

' ***** SQLの実行  *****
Statement = Connection.createStatement()
ResultSet= Statement.executeQuery("Select * From TBL_MAIN")

' ***** レコードの読み込みサンプル  *****
If  IsNull(ResultSet) Then
  ' 検索されたレコード件数が0件の場合の処理をここに書く
Else
  ' 1つ目のカラム名の取得
  sColumnName1 = ResultSet.Columns.ElementNames(0)
  While ResultSet.next
    ' 1カラム目のデータ項目を取得
    sValue = ResultSet.getString(1)
  Wend
End If
	
' ***** データベースを閉じる  *****
Statement.Close()
Connection.Close()
Connection.Dispose()

OpenOffice.org APIリファレンス
service DatabaseContext > getByname
service DataSource > getConnection
interface XConnection > createStatement
interface XStatement > executeQuery


各種クエリ実行例 編集

SELECT文には、executeQuery関数を用いる。 UPDATE, INSERT, DELETE文には、executeUpdate関数を用いる。(なお、BASEのみを用いるのであれば、 executeQuery関数も可)

カラム項目名は、"..."で囲む。(外部データベースでSQLを用いる時と仕様が違うので注意が必要)

Dim ResultSet as Object
Dim nLines as Long

ResultSet= Statement.executeQuery("Select ""column1"",_ 
      ""column2"" From TBL_MAIN Where ((""column3"" = 1))")

nLines = Statement.executeUpdate("Insert into TBL_MAIN_
      (""column1"",""column2"") Values ('string1','string2')

OpenOffice.org APIリファレンス
interface XStatement > executeQuery, executeUpdate


MySQL に接続する 編集

MySQL データベースに接続するために、StarSuite APIのcom.sun.star.sdb.DatabaseContextサービスを用いる。


JDBCによる接続 編集

この方法を用いるためには、OpenOfficeにJDBCドライバのクラスパスを登録しておく必要がある。

インストール方法: MySQL公式サイトよりJDBCドライバをダウンロードし、適当なフォルダに展開した後に、OpenOfficeのツール メニュー > オプション > OpenOffice > Java と設定メニューを開き、「クラスパスの追加」ボタンを押し「アーカイブを追加」でJDBCのjarファイルを指定すればよい。

公式サイトのドライバダウンロードページ MySQL Enterprise: Drivers > MySQL Connector/J (JDBC driver) download

Dim DatabaseContext as object
Dim sURL as String
Dim oProps(2) as new com.sun.star.beans.PropertyValue
Dim Connection as Object
Dim Statement as Object
Dim ResultSet as Object


 ' ***** データベースを開く  *****
DatabaseContext=createUnoService("com.sun.star.sdbc.DriverManager") 

' MySQLが稼動しているサーバ(192.168.1.1)とポート番号(3306)
sURL = "jdbc:mysql://192.168.1.1:3306/test?useUnicode=true&characterEncoding=UTF-8"
' ユーザ名とパスワード、ドライバ(JDBC)の指定
oProps(0).Name = "user"
oProps(0).value = "MySQLのユーザ"
oProps(1).Name = "password"
oProps(1).value = "MySQLのパスワード"
oProps(2).name = "JavaDriverClass"
oProps(2).value = "com.mysql.jdbc.Driver"
	
Connection = DatabaseContext.getConnectionWithInfo(sURL, oProps())

' ***** SQLの実行  *****
Statement = Connection.createStatement()
ResultSet= Statement.executeQuery("Select * From TBL_MAIN")

' ***** レコードの読み込みサンプル  *****
If  IsNull(ResultSet) Then
  ' 検索されたレコード件数が0件の場合の処理をここに書く
Else
  ' 1つ目のカラム名の取得
  sColumnName1 = ResultSet.Columns.ElementNames(0)
  While ResultSet.next
    ' 1カラム目のデータ項目を取得
    sValue = ResultSet.getString(1)
  Wend
End If
	
' ***** データベースを閉じる  *****
Statement.Close()
Connection.Close()
Connection.Dispose()

OpenOffice.org APIリファレンス
service DatabaseContext > getByname
interface XDriverManager > getConnectionWithInfo
interface XConnection > createStatement
interface XStatement > executeQuery


各種クエリ実行例 編集

SELECT文には、executeQuery関数を用いる。 UPDATE, INSERT, DELETE文には、executeUpdate関数を用いる。

Dim ResultSet as Object
Dim nLines as Long

ResultSet= Statement.executeQuery("Select column1,_ 
      column2 From TBL_MAIN Where column3 = 1")

nLines = Statement.executeUpdate("Insert into TBL_MAIN_
      (column1,column2) Values ('string1','string2')

OpenOffice.org APIリファレンス
interface XStatement > executeQuery, executeUpdate

MySQL 5.1 リファレンスマニュアル
データ取り扱いステートメント


ODBCによる接続 編集

この方法を用いるためには、OpenOfficeがインストールされた端末ににODBCドライバをインストールしておく必要がある。

公式サイトのドライバダウンロードページ
MySQL Enterprise: Drivers > MySQL Connector/ODBC download


PostgreSQL に接続する 編集

PostgreSQL データベースに接続するために、StarSuite APIのcom.sun.star.sdb.DatabaseContextサービスを用いる。


JDBCによる接続 編集

この方法を用いるためには、OpenOfficeにJDBCドライバのクラスパスを登録しておく必要がある。

公式サイトのドライバダウンロードページ
PostgreSQL JDBC Deriver