ページ 11

DBアクセスでODBCのSQLBindCol()を使用いたい

Posted: 2005年8月31日(水) 14:03
by マティ
実践コードモジュールにhanchanさんが投稿された
データベースアクセスクラスサンプルを元にODBC接続を行っています。
Activebasic 4.04

各APIの意味をネットで検索をしていると
SQLBindCol()を使用すると性能が改善できるような書き込みがあったので実装を試みましたが、うまくいきません。
SQLFetch()アクセス違反がありましたとエラーになります。
SQLBindCol()の定義かパラメータを間違えていると思うのですが、
どのように修正したら良いかが分かりません。
助けて下さい。

コード: 全て選択


Declare Function SQLBindCol Lib "odbc32.dll" ( _
	ByVal hstmt As HANDLE, _
	ByVal icol As Integer, _
	ByVal fCType As Integer, _
	ByVal rgbValue As String, _
	ByVal cbValueMax As Long, _
	ByRef pcbValue As Long _
	) As Integer

DIM JUMICD As DWord
Dim xTest  As Long
SQLExecDirect( hstmt, psSqlStr, SQL_NTS )
SQLBindCol   ( hstmt, 1, SQL_INTEGER, JUMINCD, 0, xTest )
SQLFetch     ( hstmt )
ちなみに

コード: 全て選択


DIM JUMICD As DWord
SQLExecDirect( hstmt, psSqlStr, SQL_NTS  )
SQLFetch     ( hstmt )
SQLGetData   ( hstmt, 1, SQL_INTEGER, VarPtr(JUMINCD), 0, RetByteSize )
ではちゃんとデータを取得出来ました。

Posted: 2005年9月01日(木) 01:36
by マティ
自己解決出来ましたので、報告します。
原因はAPIの定義でした!

コード: 全て選択


Declare Function SQLBindCol Lib "odbc32.dll" ( _
	ByVal hstmt      As HANDLE, _
	ByVal icol       As Long, _
	ByVal fCType     As Long, _
	ByRef rgbValue   As Any, _
	ByVal cbValueMax As Long, _
	ByRef pcbValue   As Long _
	) As Long