Function Reference

_SQLite_GetTable2d

カラム名と実行されたクエリのデータが格納された2次元配列を渡します。

#include <SQLite.au3>
_SQLite_GetTable2d ( $hDB, $sSQL, ByRef $aResult, ByRef $iRows, ByRef $iColumns [, $iCharSize [, $fSwichDimensions = False ]] )

 

パラメータ

$hDB 開かれているデータベース。最後に開かれたデータベースを使用する場合-1を使用
$sSQL 実行されるSQLステートメント
$aResult 結果が渡されます
$iRows 'データ'行数が渡されます
$iColumns 列数が渡されます
$iCharSize [オプション] データフィールドの最大サイズを指定します
$fSwichDimensions [オプション] $aResultの次元を切り替えます

 

返し値

成功: $SQLITE_OKを返します
失敗: $SQLITE_* 定数と比較可能な値を返します
@error: -1 - SQLiteがエラーを報告 (返し値を調べてください)
1 - _SQLite_Queryの呼び出しエラー
2 - SQLite API 'sqlite3_free_table'の呼び出しエラー
3 - SafeModeによって呼び出しが阻止されました
4 - 停止、中断、または@errorがコールバックで設定されました (@extendedにSQLiteのエラーが設定されます)
5 - SQLステートメントのUTF-8変換中のエラー

 

注意

$aResultに挿入される値の数は(($iRows) + 1) * ($iColumns)になります。
数値の0はNULLとして返されます。
この関数は_SQlite_Query() / _SQLite_Fetch*()...よりもメモリを使用しますがより高速です。
結果を必要としない(あるいは無い)場合は_SQLite_Exec()の使用を検討してください。

 

関連

_SQLite_GetTable, _SQLite_Exec, _SQlite_Query, _SQLite_Display2DResult

 


#include <SQLite.au3>
#include <SQLite.dll.au3>

Local $aResult, $iRows, $iColumns, $iRval

_SQLite_Startup ()
If @error Then
    MsgBox(16, "SQLite Error", "SQLite.dll Can't be Loaded!")
    Exit - 1
EndIf
ConsoleWrite("_SQLite_LibVersion=" &_SQLite_LibVersion() & @CRLF)
_SQLite_Open () ; :メモリ: データベースを開く
If @error Then
    MsgBox(16, "SQLite Error", "Can't Load Database!")
    Exit - 1
EndIf

;サンプルテーブル
;   Name        | Age
;   -----------------------
;   Alice       | 43
;   Bob         | 28
;   Cindy       | 21

If Not _SQLite_Exec (-1, "CREATE TEMP TABLE persons (Name, Age);") = $SQLITE_OK Then _
        MsgBox(16, "SQLite Error", _SQLite_ErrMsg ())
If Not _SQLite_Exec (-1, "INSERT INTO persons VALUES ('Alice','43');") = $SQLITE_OK Then _
        MsgBox(16, "SQLite Error", _SQLite_ErrMsg ())
If Not _SQLite_Exec (-1, "INSERT INTO persons VALUES ('Bob','28');") = $SQLITE_OK Then _
        MsgBox(16, "SQLite Error", _SQLite_ErrMsg ())
If Not _SQLite_Exec (-1, "INSERT INTO persons VALUES ('Cindy','21');") = $SQLITE_OK Then _
        MsgBox(16, "SQLite Error", _SQLite_ErrMsg ())

; クエリ
$iRval = _SQLite_GetTable2d (-1, "SELECT * FROM persons;", $aResult, $iRows, $iColumns)
If $iRval = $SQLITE_OK Then
    _SQLite_Display2DResult($aResult)

;~    $aResultは次のようになる:
;~
;~   Name   Age
;~   Alice  43
;~   Bob    28
;~   Cindy  21
;~
;~    _SQLite_GetTable2dで次元が切り替えられた場合、結果は次のようになる:
;~
;~   Name  Alice  Bob  Cindy
;~   Age   43     28   21

Else
    MsgBox(16, "SQLite Error: " & $iRval, _SQLite_ErrMsg ())
EndIf

_SQLite_Close ()
_SQLite_Shutdown ()