OpenOffice.org Base Basic
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