コンテンツにスキップ

OpenOffice.org Base Basic

出典: フリー教科書『ウィキブックス(Wikibooks)』

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