ODBC 関数 — プログラミング言語 Ring 1.14 取扱説明書

Skip to content

# ODBC 関数

ODBC 関数の用法です。

- odbc_init()

- odbc_drivers()

- odbc_datasources()

- odbc_close()

- odbc_connect()

- odbc_disconnect()

- odbc_execute()

- odbc_colcount()

- odbc_fetch()

- odbc_getdata()

- odbc_tables()

- odbc_columns()

- odbc_autocommit()

- odbc_commit()

- odbc_rollback()

この関数の使用前に odbclib.ring ライブラリを読み込みます。

    load "odbclib.ring"
    # ODBC 関数の使用

## odbc_init() 関数

odbc_init() 関数はハンドルを作成します。

文法:

    odbc_init() ---> ODBC ハンドル

## odbc_drivers() 関数

odbc_drivers() 関数は ODBC ドライバのリストを取得します。

文法:

    odbc_drivers(ODBC ハンドル) ---> ドライバのリスト

## odbc_datasources() 関数

odbc_datasources() 関数は ODBC データソースのリストを取得します。

文法:

    odbc_datasources(ODBC ハンドル) ---> データソースのリスト

## odbc_close() 関数

ODBC_Close() 関数は ODBC 関数の使用終了後にリソースを解放します。

文法:

    odbc_close(ODBC ハンドル)

## ODBC ドライバのリストを表示

この用例は ODBC ドライバのリストを表示します。

    See "ODBC test 1" + nl
    oODBC = odbc_init()
    See "Drivers " + nl
    see odbc_drivers(oODBC)
    odbc_close(oODBC)

実行結果:

    ODBC test 1
    Drivers
    Microsoft Access-Treiber (*.mdb) - SQLLevel=0
    Driver do Microsoft Paradox (*.db ) - SQLLevel=0
    Driver do Microsoft Excel(*.xls) - SQLLevel=0
    Microsoft Text Driver (*.txt; *.csv) - SQLLevel=0
    Driver da Microsoft para arquivos texto (*.txt; *.csv) - SQLLevel=0
    Microsoft dBase-Treiber (*.dbf) - SQLLevel=0
    SQL Server - CPTimeout=60
    Microsoft Excel Driver (*.xls) - SQLLevel=0
    Driver do Microsoft dBase (*.dbf) - SQLLevel=0
    Microsoft Paradox-Treiber (*.db ) - SQLLevel=0
    Microsoft ODBC for Oracle - CPTimeout=120
    Microsoft Text-Treiber (*.txt; *.csv) - SQLLevel=0
    Microsoft Excel-Treiber (*.xls) - SQLLevel=0
    Microsoft Access Driver (*.mdb) - SQLLevel=0
    Driver do Microsoft Access (*.mdb) - SQLLevel=0
    Microsoft Paradox Driver (*.db ) - SQLLevel=0
    Microsoft dBase Driver (*.dbf) - SQLLevel=0
    Microsoft Access Driver (*.mdb, *.accdb) - UsageCount=3
    Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb) - UsageCount=3
    Microsoft Access Text Driver (*.txt, *.csv) - UsageCount=3
    SQL Server Native Client 10.0 - UsageCount=1
    SQL Server Native Client 11.0 - UsageCount=1
    Microsoft Access dBASE Driver (*.dbf, *.ndx, *.mdx) - UsageCount=3
    Microsoft Access Paradox Driver (*.db) - UsageCount=3
    MySQL ODBC 5.3 ANSI Driver - UsageCount=1
    MySQL ODBC 5.3 Unicode Driver - UsageCount=1
    ODBC Driver 11 for SQL Server - UsageCount=1
    Lianja ODBC Driver - CPTimeout=60
    Microsoft Visual FoxPro Driver - UsageCount=1
    Microsoft Visual FoxPro-Treiber - UsageCount=1
    Driver para o Microsoft Visual FoxPro - UsageCount=1
    Microsoft FoxPro VFP Driver (*.dbf) - UsageCount=1

## ODBC データソースのリストを表示

この用例は ODBC データソースのリストを表示します。

    See "ODBC test 2" + nl
    pODBC = odbc_init()
    See "Data Sources " + nl
    see odbc_datasources(pODBC)
    odbc_close(pODBC)

実行結果:

    ODBC test 2
    Data Sources
    Excel Files - Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)
    MS Access Database - Microsoft Access Driver (*.mdb, *.accdb)
    Customer - Microsoft Access Driver (*.mdb)
    IdCardData - Microsoft Access Driver (*.mdb)
    MyProjectData2 - Microsoft Access Driver (*.mdb)
    MyData - Microsoft Access Driver (*.mdb)
    MonprojetData - Microsoft Access Driver (*.mdb)
    dBASE Files - Microsoft Access dBASE Driver (*.dbf, *.ndx, *.mdx)
    myvfpdata - Microsoft Visual FoxPro Driver
    FACTORYDATA - Microsoft Access Driver (*.mdb)
    TRAININGSYSDATA - Microsoft Access Driver (*.mdb)
    RVCSYSDATASQLDB - SQL Server Native Client 11.0
    PWCTRVCDATA - Microsoft Access Driver (*.mdb)
    MyCompany - Microsoft Access Driver (*.mdb)
    HCS - Microsoft Access Driver (*.mdb)
    HCS2 - Microsoft Access Driver (*.mdb, *.accdb)
    MyProjectData - Microsoft Access Driver (*.mdb)
    Xtreme Sample Database 2008 - Microsoft Access Driver (*.mdb)
    Lianja_Southwind - Lianja ODBC Driver
    Visual FoxPro Database - Microsoft Visual FoxPro Driver
    Visual FoxPro Tables - Microsoft Visual FoxPro Driver

## odbc_connect() 関数

odbc_connect() 関数はデータベースへ接続します。

文法:

    odbc_connect(ODBC ハンドル, 接続文字列)

## odbc_disconnect() 関数

odbc_disconnect() 関数はデータベースの接続を閉じます。

文法:

    odbc_disconnect(ODBC ハンドル)

## 接続の開始と終了

この用例はデータベースへ接続後にデータベースへの接続を閉じます。

    See "ODBC test 3" + nl
    pODBC = odbc_init()
    See "Connect to database" + nl
    see odbc_connect(pODBC,"DBQ=test.mdb;Driver={Microsoft Access Driver (*.mdb)}") + nl
    See "disconnect" + nl
    odbc_disconnect(pODBC)
    See "Close database..." + nl
    odbc_close(pODBC)

実行結果:

    ODBC test 3
    Connect to database
    1
    disconnect
    Close database...

## odbc_execute() 関数

odbc_execute() 関数はデータベースで SQL ステートメントを実行します。

文法:

    odbc_execute(ODBC ハンドル, cSQLStatement)

## odbc_colcount() 関数

odbc_colcount() 関数はクエリの結果にあるカラム数を取得します。

文法:

    odbc_colcount(ODBC ハンドル) ---> 数値によるカラム数

## odbc_fetch() 関数

odbc_fetch() 関数はクエリ結果から列をフェッチします。

文法:

    odbc_fetch(ODBC ハンドル)

## odbc_getdata() 関数

odbc_getdata() 関数はフェッチ済みの列からカラム値を取得します。

文法:

    odbc_getdata(ODBC ハンドル, nColumnNumber) ---> カラムの値

## クエリの実行と結果の表示

この用例はクエリの実行後にクエリの結果を表示します。

    See "ODBC test 4" + nl
    pODBC = odbc_init()
    See "Connect to database" + nl
    see odbc_connect(pODBC,"DBQ=test.mdb;Driver={Microsoft Access Driver (*.mdb)}") + nl
    See "Select data" + nl
    see odbc_execute(pODBC,"select * from person") + nl
    nMax = odbc_colcount(pODBC)
    See "Columns Count : " + nMax + nl
    while odbc_fetch(pODBC)
            See "Row data:" + nl
            for x = 1 to nMax
                    see odbc_getdata(pODBC,x) + " - "
            next
    end
    See "Close database..." + nl
    odbc_disconnect(pODBC)
    odbc_close(pODBC)

## odbc_tables() 関数

odbc_tables() 関数はテーブル内にあるテーブルのリストを取得します。

この関数の結果はクエリ結果を取得するときにアクセスできます。

文法:

    odbc_tables(ODBC ハンドル)

用例:

    See "ODBC test - Get Database Tables" + nl
    pODBC = odbc_init()
    See "Connect to database" + nl
    odbc_connect(pODBC,"DBQ=test.mdb;Driver={Microsoft Access Driver (*.mdb)}") + nl
    See "Select data" + nl
    odbc_tables(pODBC) + nl
    nMax = odbc_colcount(pODBC)
    See "Columns Count : " + nMax + nl
    while odbc_fetch(pODBC)
            for x = 1 to nMax
                    see odbc_getdata(pODBC,x)
                    if x != nMax see " - " ok
            next
            See nl
    end
    See "Close database..."
    odbc_disconnect(pODBC)
    odbc_close(pODBC)

実行結果:

    ODBC test - Get Database Tables
    Connect to database
    Select data
    Columns Count : 5
    .\test - NULL - Customer - TABLE - NULL
    .\test - NULL - employee - TABLE - NULL
    .\test - NULL - person - TABLE - NULL
    .\test - NULL - tel - TABLE - NULL
    Close database...

## odbc_columns() 関数

odbc_columns() 関数はテーブル内にあるカラムのリストを取得します。

文法:

    odbc_columns(ODBC ハンドル, cTableName)

用例:

    See "ODBC test - Get Table Columns" + nl
    pODBC = odbc_init()
    See "Connect to database" + nl
    odbc_connect(pODBC,"DBQ=test.mdb;Driver={Microsoft Access Driver (*.mdb)}") + nl
    See "Get Columns inside the Person Table" + nl
    odbc_columns(pODBC,"person") + nl
    while odbc_fetch(pODBC)
            see odbc_getdata(pODBC,4) + nl
    end
    See "Close database..." + nl
    odbc_disconnect(pODBC)
    odbc_close(pODBC)

実行結果:

    ODBC test - Get Table Columns
    Connect to database
    Get Columns inside the Person Table
    FIRST
    LAST
    STREET
    CITY
    STATE
    ZIP
    HIREDATE
    MARRIED
    AGE
    SALARY
    NOTES
    Close database...

## odbc_autocommit() 関数

odbc_autocommit() 関数は自動コミット機能を有効または無効化します。

文法:

    odbc_autocommit(ODBC ハンドル, lStatus)   # lStatus には True または False を指定します。

## odbc_commit() 関数

odbc_commit() 関数はデータベースのコミット更新をします。

文法:

    odbc_commit(ODBC ハンドル)

## odbc_rollback() 関数

odbc_rollback() 関数はデータベースのロールバック更新をします。

文法:

    odbc_rollback(ODBC ハンドル)

## トランザクションおよびコミットとロールバックの用法

用例:

    See "ODBC Test - Transactions and using Commit and Rollback" + nl
    pODBC = odbc_init()
    See "Connect to database" + nl
    see odbc_connect(pODBC,"DBQ=test.mdb;Driver={Microsoft Access Driver (*.mdb)}") + nl
    see "insert data..." + nl
    odbc_autocommit(pODBC,0)
    for x = 1 to 10000
            odbc_execute(pODBC,"insert into tel values (" + x + ",'mahmoud')")
    next
    for x = 10001 to 15000
            odbc_execute(pODBC,"insert into tel values (" + x + ",'samir')")
    next
    odbc_commit(pODBC)

    for x = 15001 to 20000
            odbc_execute(pODBC,"insert into tel values (" + x + ",'fayed')")
    next

    ODBC_ROLLBACK(pODBC)
    odbc_execute(pODBC,"insert into tel values (" + x + ",'fayed')")
    odbc_commit(pODBC)

    See "Close database..." + nl
    odbc_disconnect(pODBC)
    odbc_close(pODBC)

実行結果:

    ODBC Test - Transactions and using Commit and Rollback
    Connect to database
    1
    insert data...
    Close database...

## イメージの保存と復元

この用例ではデータベースのイメージを保存します。

    See "ODBC test - Save image in the database" + nl
    pODBC = odbc_init()
    See "Connect to database" + nl
    see odbc_connect(pODBC,"DBQ=test.mdb;Driver={Microsoft Access Driver (*.mdb)}") + nl
    see "Read Image File..." + nl
    cFile = str2hex(read("tests\mahmoud.jpg"))
    see "size " + len(CFile)+nl
    see "Save image in the database..." + nl
    stmt = "insert into tel values (20000,'mahmoud','" + cFile + "');"
    odbc_execute(pODBC,stmt)
    See "Close database..." + nl
    odbc_disconnect(pODBC)
    odbc_close(pODBC)

この用例ではデータベースのイメージを復元します。

    See "ODBC Test - Restore image from the database" + nl
    pODBC = odbc_init()
    See "Connect to database" + nl
    see odbc_connect(pODBC,"DBQ=test.mdb;Driver={Microsoft Access Driver (*.mdb)}") + nl
    See "Select data" + nl
    see odbc_execute(pODBC,"select * from tel where id = 20000") + nl
    nMax = odbc_colcount(pODBC)
    See "Columns Count : " + nMax + nl
    if odbc_fetch(pODBC)
            See "Write image file" + nl
            write("tests\great.jpg",hex2str( odbc_getdata(pODBC,3) ) )
    ok
    See "Close database..." + nl
    odbc_disconnect(pODBC)
    odbc_close(pODBC)