○VB6 RDO (Remote Data Objects) 
ODBCを介してデータベースを操作するための部品

■データベース名 : testDB

▼操作するデータベースの構造
create table table1(field1 char(20),field2 char(20));

▼作成したODBCデータソース名
testODBCDriver

▼VB6の参照設定にて参照します
Microsoft Remote Data Object *.*

■接続・切断

    'ODBCドライバに対する接続文字列
    Const ConnectionString As String = "DSN=testODBCDriver;UID=sa;PWD=;DATABASE=testDB;"
    Dim rdoConnection_obj As rdoConnection

    '接続
    Set rdoConnection_obj = rdoEnvironments(0).OpenConnection("", rdDriverNoPrompt, True, ConnectionString)

    'タイムアウト時間の設定
    rdoConnection_obj.QueryTimeout = 360

    '切断
    rdoConnection_obj.Close

■結果を返さないSQL文の実行
    
    'トランザクションの開始
    rdoConnection_obj.Execute "BEGIN TRANSACTION sp", rdExecDirect
    
    '結果を返さないSQL文の実行
    rdoConnection_obj.Execute "INSERT INTO table1(field1,field2) VALUES('aaaaa','bbbbb');"
    
    'トランザクションの終了
    rdoConnection_obj.Execute "COMMIT TRANSACTION sp", rdExecDirect
    
    'ロールバック
    'rdoConnection_obj.Execute "ROLLBACK TRANSACTION sp", rdExecDirect

■結果を返すSQL文の実行

    Dim resultset_obj As rdoResultset
    'キーセットタイプでレコードを取得
    Set resultset_obj = rdoConnection_obj.OpenResultset("Select * From table1;", rdOpenKeyset, rdConcurLock)
    
    'セットの先頭に移動
    resultset_obj.MoveFirst
    Do Until resultset_obj.EOF 'EOFまでループ
        'セットの内容を表示
        Debug.Print resultset_obj![field1], resultset_obj![field2]
        resultset_obj.MoveNext '次の行に移動
    Loop
    resultset_obj.Close

■新しい行の追加・更新

    Dim resultset_obj As rdoResultset
    '静的タイプでレコードを取得
    Set resultset_obj = rdoConnection_obj.OpenResultset("Select * From table1;", rdOpenDynamic, rdConcurLock)

    resultset_obj.AddNew  '新しいレコードを追加
    'resultset_obj.Edit  '現在の位置のレコードを編集
    resultset_obj![field1] = "test"
    resultset_obj![field2] = "test2"
    resultset_obj.Update  '更新
    'resultset_obj.CancelUpdate '変更結果の破棄

    resultset_obj.Close


■オプション

▼カーソルの種類

rdOpenForwardOnly      前方専用タイプ
rdOpenStatic               静的タイプ 
rdOpenKeyset              キーセットタイプ 
rdOpenDynamic            動的タイプ

▼ロックタイプ 

rdConcurLock              排他的同時実行。
rdConcurReadOnly        読み取り専用



▲トップページ > Visual BASIC と C#