*行セット [#b7dbcd88] データの利用またはデータの変更などに利用する com.sun.star.sdbc.RowSet サービス。com.sun.star.sdbc.ResultSet をインクルードしているため、ResultSet がかなりの部分を占めています。 また、フォームを利用する場合にはフォームオブジェクトは .sdb.ResultSet、.sdb.RowSet、.sdbc.ResultSet、.sdbc.RowSet サービスをサポートしているため同じ操作が行えます。 #contents **サービス [#z1c13e4f] サービスをインスタンス化して利用します。 oRowSet = CreateUnoService("com.sun.star.sdbc.RowSet") **アクティブ接続 [#f5588a61] データソースから取得した[[接続>../Connection]]を指定します。 oRowSet.ActiveConnection = oDBConnection **コマンド [#j6c4fe27] コマンドの種類を CommandType に設定します。タイプが COMMAND の時には Command に SQL ステートメントを指定します。 **データの取得 [#q0f2f017] execute メソッドでデータソースからデータを取得します。 **カーソルの移動 [#s3ad878b] 現在のデータ行を示すカーソルを移動するメソッドが数種類あります。 ***次のレコード [#u16e9598] next メソッドで次のレコードへカーソルを移動します。次のレコードがない場合 false が戻ります。 While oRowSet.next() oRowSet.getString(0) WEnd ***前のレコード [#x346e432] previous メソッドで一つ前のレコードへ移ります。次のレコードが無いときには false が戻ります。 ***相対移動 [#e0bb903c] relative メソッドで現在のカーソル位置から相対的に移動します。 ***行指定での移動 [#y105e354] absolute メソッドで特定の行に移動します。 ***最初の行より前および最後の行後 [#q37b44dd] 行の開始前への移動は beforeFirst メソッドで、最後の行後への移動は afterLast メソッドで行います。 ***カーソル位置の確認 [#j06c43df] isBeforeFirst メソッドで開始前の位置かどうか、isAfterLast メソッドで最終行後の位置かどうかを確認できます。 isFirst メソッドで最初の行かどうか、isLast メソッドで最後の行かどうか確認できます。 ***最初の行と最後の行 [#vfb8c249] 最初の行へは first メソッドで、最後の行へは last メソッドで移動します。 ***カーソル位置 [#hed1b91a] 現在のカーソル位置を示すインデックスを getRow メソッドで取得できます。 **列の検索 [#c596ecc7] 列データを検索するには findColumn メソッドを利用します。戻り値は現在のセット中の列long 型でのインデックスです。 oRowSet.findColumn("WORD") 列のインデックスはソースからデータを取得するときに利用します。 **値の取得 [#i9287569] 各データを取得するには列を指定します。指定した列インデックスのデータを特定の型データとして取得します。 -getString -getBoolean -getByte -getShort -getInt -getLong -getFloat -getDouble -getBytes -getDate -getTime -getTimestamp -getBinaryStream -getCharacterStream -getRef -getBlob -getClob -getArray -getObject( [in] long columnIndex, [in] com.sun.star.container.XNameAccess typeMap ) また、wasNull メソッドで NULL 値かどうか確認できます。 列指定には列番号を使用します。 nColID = oRowSet.findColumn("WORD") sStr = oRowSet.getString( nColID ) **値の更新 [#q30562f4] 値を更新するメソッドは次のものがあります。 -updateNull ( [in] long columnIndex ) -updateBoolean ( [in] long columnIndex, [in] boolean x ) -updateByte ( [in] long columnIndex, [in] byte x ) -updateShort ( [in] long columnIndex, [in] short x ) -updateInt ( [in] long columnIndex, [in] long x ) -updateLong ( [in] long columnIndex, [in] hyper x ) -updateFloat ( [in] long columnIndex, [in] float x ) -updateDouble ( [in] long columnIndex, [in] double x ) -updateString ( [in] long columnIndex, [in] string x ) -updateBytes ( [in] long columnIndex, [in] []byte x ) -updateDate ( [in] long columnIndex, [in] com.sun.star.util.Date x ) -updateTime ( [in] long columnIndex, [in] com.sun.star.util.Time x ) -updateTimestamp ( [in] long columnIndex, [in] com.sun.star.util.DateTime x ) -updateBinaryStream ( [in] long columnIndex, [in] com.sun.star.io.XInputStream x, [in] long length ) -updateCharacterStream ( [in] long columnIndex, [in] com.sun.star.io.XInputStream x, [in] long length ) -updateObject ( [in] long columnIndex, [in] any x ) -updateNumericObject ( [in] long columnIndex, [in] any x, [in] long scale ) **値の設定 [#r9a743ca] 次のメソッドを利用して値を設定します。 -setNull ( [in] long parameterIndex, [in] long sqlType ) -setObjectNull ( [in] long parameterIndex, [in] long sqlType, [in] string typeName ) -setBoolean ( [in] long parameterIndex, [in] boolean x ) -setByte ( [in] long parameterIndex, [in] byte x ) -setShort ( [in] long parameterIndex, [in] short x ) -setInt ( [in] long parameterIndex, [in] long x ) -setLong ( [in] long parameterIndex, [in] hyper x ) -setFloat ( [in] long parameterIndex, [in] float x ) -setDouble ( [in] long parameterIndex, [in] double x ) -setString ( [in] long parameterIndex, [in] string x ) -setBytes ( [in] long parameterIndex, [in] []byte x ) -setDate ( [in] long parameterIndex, [in] com.sun.star.util.Date x ) -setTime ( [in] long parameterIndex, [in] com.sun.star.util.Time x ) -setTimestamp ( [in] long parameterIndex, [in] com.sun.star.util.DateTime x ) -setBinaryStream ( [in] long parameterIndex, [in] com.sun.star.io.XInputStream x, [in] long length ) -setCharacterStream ( [in] long parameterIndex, [in] com.sun.star.io.XInputStream x, [in] long lengt- ) -setObject ( [in] long parameterIndex, [in] any x ) -setObjectWithInfo ( [in] long parameterIndex, [in] any x, [in] long targetSqlType, [in] long scale ) -setRef ( [in] long parameterIndex, [in] com.sun.star.sdbc.XRef x ) -setBlob ( [in] long parameterIndex, [in] com.sun.star.sdbc.XBlob x ) -setClob ( [in] long parameterIndex, [in] com.sun.star.sdbc.XClob x ) -setArray ( [in] long parameterIndex, [in] com.sun.star.sdbc.XArray x ) **行の挿入 [#n1e04c93] insertRow メソッドで新たな行を挿入します。 挿入した行へは moveToInsertRow メソッドで移動できます。また、元の行に戻るには moveToCurrentRow メソッドを利用します。 **行の削除 [#rb2f2c4e] deleteRow メソッドで現在のカーソル行を削除します。 **行の更新 [#p5502405] updateXXX メソッドで更新された行の更新を適用するために updateRow メソッドで既存の行を更新します。 updateRow メソッドを呼ぶ前に行の更新を cancelRowUpdates メソッドで破棄できます。 **情報 [#f778e822] getMetaData メソッドで現在の RowSet の情報を取得できます。 |返り値の型|メソッド名|引数|説明|h |string|getCatalogName|( [in] long column )|表のカタログ名| |long|getColumnCount|()|列数を取得します| |long|getColumnDisplaySize|( [in] long column )|列表示最大文字数| |string|getColumnLabel|( [in] long column )|列ラベル| |string|getColumnName|( [in] long column )|列名を返します| |string|getColumnServiceName|( [in] long column )|列データサービス名| |long|getColumnType|( [in] long column )|列データタイプ com.sun.star.sdbc.DataType 定数| |string|getColumnTypeName|( [in] long column )|列データタイプ名| |long|getPrecision|( [in] long column )|| |long|getScale|( [in] long column )|| |string|getSchemaName|( [in] long column )|列のスキーマ名| |string|getTableName|( [in] long column )|所属する表名| |boolean|isAutoIncrement|( [in] long column )|自動で増加 (ID フィールドなど)。true のときは読み込み専用| |boolean|isCaseSensitive|( [in] long column )|大文字と小文字を区別するかどうか| |boolean|isCurrency|( [in] long column )|通貨値かどうか| |boolean|isDefinitelyWritable|( [in] long column )|確実に書き込み可能かどうか| |long|isNullable|( [in] long column )|Null 値が利用可能かどうか| |boolean|isReadOnly|( [in] long column )|読み込み専用かどうか| |boolean|isSearchable|( [in] long column )|| |boolean|isSigned|( [in] long column )|符号付かどうか| |boolean|isWritable|( [in] long column )|書き込み可能かどうか| |