Archive for the ‘ODBC’ Category
-
Hello, ODBC(PHP) World!
Posted on 9月 30th, 2012 by cx20
ODBC
ODBC(Open Database Connectivity)は、マイクロソフト社が提唱した DBMS 接続用の API 仕様である。
DBMS の差異は ODBC ドライバによって吸収される為、ODBC の手順にしたがってプログラムを作成すれば、基本的な差異を意識せず、プログラムすることができる。ODBCドライバ ファイル Microsoft Access Driver (*.mdb) ODBCJT32.DLL Microsoft Text Driver (*.txt; *.csv) ODBCJT32.DLL Microsoft Excel Driver (*.xls) ODBCJT32.DLL Microsoft dBase Driver (*.dbf) ODBCJT32.DLL Microsoft ODBC for Oracle MSORCL32.DLL Microsoft Paradox Driver (*.db ) ODBCJT32.DLL SQL Server SQLSRV32.DLL Microsoft Access Driver (*.mdb, *.accdb) ACEODBC.DLL SQL Server Native Client 10.0 SQLNCLI10.DLL ソースコード(PHP + ODBC + SQL Server)
<?php $cn = odbc_connect("Driver={SQL Server};Server=(local)", "sa", "P@ssW0rd"); $rs = odbc_exec($cn, "SELECT 'Hello, ODBC World' AS Message"); while (odbc_fetch_row($rs)) { $result = odbc_result($rs, "Message"); echo "Message", "n"; echo "-------------------n"; echo $result, "n"; } odbc_close($cn); ?>
実行方法(Windows)
C:¥> php -f hello.php
実行結果
Message ------------------ Hello, ODBC World!
-
Hello, ODBC(Python) World!
Posted on 9月 26th, 2012 by cx20
DB API
ODBC(Open Database Connectivity)は、マイクロソフト社が提唱した DBMS 接続用の API 仕様である。
DBMS の差異は ODBC ドライバによって吸収される為、ODBC の手順にしたがってプログラムを作成すれば、基本的な差異を意識せず、プログラムすることができる。ODBCドライバ ファイル Microsoft Access Driver (*.mdb) ODBCJT32.DLL Microsoft Text Driver (*.txt; *.csv) ODBCJT32.DLL Microsoft Excel Driver (*.xls) ODBCJT32.DLL Microsoft dBase Driver (*.dbf) ODBCJT32.DLL Microsoft ODBC for Oracle MSORCL32.DLL Microsoft Paradox Driver (*.db ) ODBCJT32.DLL SQL Server SQLSRV32.DLL Microsoft Access Driver (*.mdb, *.accdb) ACEODBC.DLL SQL Server Native Client 10.0 SQLNCLI10.DLL Python DB API は Python 向けの Database Interface(API)である。
ODBC ドライバを介することで、様々な DBMS への接続が可能となっている。ソースコード(Python + DB API + ODBC + SQL Server)
import pyodbc cn = pyodbc.connect("DRIVER={SQL Server};SERVER=(local);DATABASE=master;UID=sa;PWD=P@ssW0rd") cur = cn.cursor() cur.execute("SELECT 'Hello, ODBC World!' AS Message") rows = cur.fetchall() for row in rows: print "Message" print "-------------------" print row[0] cur.close() cn.close()
実行方法(Windows)
C:¥> python hello.py
実行結果
Message ----------------- Hello, ODBC World!
-
Hello, ODBC(Ruby) World!
Posted on 9月 23rd, 2012 by cx20
DBI
ODBC(Open Database Connectivity)は、マイクロソフト社が提唱した DBMS 接続用の API 仕様である。
DBMS の差異は ODBC ドライバによって吸収される為、ODBC の手順にしたがってプログラムを作成すれば、基本的な差異を意識せず、プログラムすることができる。ODBCドライバ ファイル Microsoft Access Driver (*.mdb) ODBCJT32.DLL Microsoft Text Driver (*.txt; *.csv) ODBCJT32.DLL Microsoft Excel Driver (*.xls) ODBCJT32.DLL Microsoft dBase Driver (*.dbf) ODBCJT32.DLL Microsoft ODBC for Oracle MSORCL32.DLL Microsoft Paradox Driver (*.db ) ODBCJT32.DLL SQL Server SQLSRV32.DLL Microsoft Access Driver (*.mdb, *.accdb) ACEODBC.DLL SQL Server Native Client 10.0 SQLNCLI10.DLL DBI は Ruby 向けの Database Interface(API)である。
DBI 用 ODBC ドライバを介することで、様々な DBMS への接続が可能となっている。ソースコード(Ruby + DBI + ODBC + SQL Server)
require 'rubygems' require "dbi" dbh = DBI.connect("DBI:ODBC:Driver={SQL Server};Server=(local);DATABASE=master", "sa", "P@ssW0rd") sth = dbh.prepare("SELECT 'Hello, DBI World' AS Message") sth.execute() while row = sth.fetch do print "Message", "n"; print "-------------------n"; print row[0] end sth.finish dbh.disconnect
ライブラリ導入方法
C:¥> gem install dbi C:¥> gem install dbd-odbc
以下のエラーが出る場合は、odbc.so と odbc_utf8.so が足りていない可能性がある為、ODBC Binding for Ruby より i386-msvcrt-ruby-odbc.zip を入手し、%RUBY_HOME%librubysite_ruby1.8i386-msvcrt にコピーする必要がある。
C:/ruby-1.8/lib/ruby/gems/1.8/gems/dbi-0.4.5/lib/dbi.rb:300:in `load_driver': Unable to load driver 'ODBC' (underlying error: uninitialized constant DBI::DBD::ODBC) (DBI::InterfaceError) from C:/ruby-1.8/lib/ruby/1.8/monitor.rb:242:in `synchronize' from C:/ruby-1.8/lib/ruby/gems/1.8/gems/dbi-0.4.5/lib/dbi.rb:242:in `load_driver' from C:/ruby-1.8/lib/ruby/gems/1.8/gems/dbi-0.4.5/lib/dbi.rb:160:in `_get_full_driver' from C:/ruby-1.8/lib/ruby/gems/1.8/gems/dbi-0.4.5/lib/dbi.rb:145:in `connect' from hello.rb:3
なお、2012.09 現在、1.9 版のライブラリは提供されていない模様。
実行方法(Windows)
C:¥> ruby hello.rb
実行結果
Message ----------------- Hello, DBI World!
-
Hello, ODBC(Perl) World!
Posted on 9月 20th, 2012 by cx20
ODBC
ODBC(Open Database Connectivity)は、マイクロソフト社が提唱した DBMS 接続用の API 仕様である。
DBMS の差異は ODBC ドライバによって吸収される為、ODBC の手順にしたがってプログラムを作成すれば、基本的な差異を意識せず、プログラムすることができる。ODBCドライバ ファイル Microsoft Access Driver (*.mdb) ODBCJT32.DLL Microsoft Text Driver (*.txt; *.csv) ODBCJT32.DLL Microsoft Excel Driver (*.xls) ODBCJT32.DLL Microsoft dBase Driver (*.dbf) ODBCJT32.DLL Microsoft ODBC for Oracle MSORCL32.DLL Microsoft Paradox Driver (*.db ) ODBCJT32.DLL SQL Server SQLSRV32.DLL Microsoft Access Driver (*.mdb, *.accdb) ACEODBC.DLL SQL Server Native Client 10.0 SQLNCLI10.DLL ソースコード(Perl + ODBC + SQL Server)
use strict; use Win32::ODBC; my $db = Win32::ODBC->new('Driver={SQL Server};Server=(local);UID=sa;PWD=P@ssW0rd'); $db->Sql("SELECT 'Hello, ODBC World' AS Message"); while ($db->FetchRow) { my %row = $db->DataHash; print "Message", "n"; print "-------------------n"; print $row{Message}, "n"; } $db->Close();
ソースコード(Perl + ODBC + MySQL)
use strict; use Win32::ODBC; my $db = Win32::ODBC->new('Driver={MySQL ODBC 5.1 Driver};Server=localhost;UID=root;PWD=P@ssW0rd'); $db->Sql("SELECT 'Hello, ODBC World' AS Message"); while ($db->FetchRow) { my %row = $db->DataHash; print "Message", "n"; print "-------------------n"; print $row{Message}, "n"; } $db->Close();
実行方法(Windows)
C:¥> perl hello.pl
実行結果
Message ------------------ Hello, ODBC World!
-
Hello, ODBC(MFC) World!
Posted on 3月 25th, 2012 by cx20
ODBC(MFC)
ODBC(Open Database Connectivity)は、マイクロソフト社が提唱した DBMS 接続用の API 仕様である。
DBMS の差異は ODBC ドライバによって吸収される為、ODBC の手順にしたがってプログラムを作成すれば、基本的な差異を意識せず、プログラムすることができる。ODBCドライバ ファイル Microsoft Access Driver (*.mdb) ODBCJT32.DLL Microsoft Text Driver (*.txt; *.csv) ODBCJT32.DLL Microsoft Excel Driver (*.xls) ODBCJT32.DLL Microsoft dBase Driver (*.dbf) ODBCJT32.DLL Microsoft ODBC for Oracle MSORCL32.DLL Microsoft Paradox Driver (*.db ) ODBCJT32.DLL SQL Server SQLSRV32.DLL Microsoft Access Driver (*.mdb, *.accdb) ACEODBC.DLL SQL Server Native Client 10.0 SQLNCLI10.DLL MFC ODBC クラス は、Visual C++ の ODBC クラスライブラリである。
ソースコード(VC + MFC + ODBC + Jet データベース)
#include <afx.h> #include <afxdb.h> int _tmain( int argc, TCHAR* argv[] ) { CDatabase db; CString strCon = _T("Driver={Microsoft Access Driver (*.mdb)};DBQ=hello.mdb"); CString strSQL = _T("SELECT 'Hello, ODBC(MFC) World!' AS Message"); db.OpenEx( strCon ); CRecordset rs( &db ); rs.Open( CRecordset::forwardOnly, strSQL ); CString strMessage; while( !rs.IsEOF() ) { rs.GetFieldValue( (short)0, strMessage ); _tprintf( _T("%sn"), (LPCTSTR)strMessage ); rs.MoveNext(); } rs.Close(); db.Close(); return 0; }
ソースコード(VC + MFC + ODBC + ACE データベース)
#include <afx.h> #include <afxdb.h> int _tmain( int argc, TCHAR* argv[] ) { CDatabase db; CString strCon = _T("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=.\hello.accdb"); CString strSQL = _T("SELECT 'Hello, ODBC World!' AS Message"); db.OpenEx( strCon ); CRecordset rs( &db ); rs.Open( CRecordset::forwardOnly, strSQL ); CString strMessage; while( !rs.IsEOF() ) { rs.GetFieldValue( (short)0, strMessage ); _tprintf( _T("%sn"), (LPCTSTR)strMessage ); rs.MoveNext(); } rs.Close(); db.Close(); return 0; }
ソースコード(VC + MFC + ODBC + SQL Server)
#include <afx.h> #include <afxdb.h> int _tmain( int argc, TCHAR* argv[] ) { CDatabase db; CString strCon = _T("Driver={SQL Server};SERVER=(local);DATABASE=master;UID=sa;PWD=P@ssW0rd"); CString strSQL = _T("SELECT 'Hello, ODBC(MFC) World!' AS Message"); db.OpenEx( strCon ); CRecordset rs( &db ); rs.Open( CRecordset::forwardOnly, strSQL ); CString strMessage; while( !rs.IsEOF() ) { rs.GetFieldValue( (short)0, strMessage ); _tprintf( _T("%sn"), (LPCTSTR)strMessage ); rs.MoveNext(); } rs.Close(); db.Close(); return 0; }
ソースコード(VC + MFC + ODBC + Oracle)
#include <afx.h> #include <afxdb.h> int _tmain( int argc, TCHAR* argv[] ) { CDatabase db; CString strCon = _T("Driver={Microsoft ODBC for Oracle};SERVER=ORCL;UID=scott;PWD=tiger"); CString strSQL = _T("SELECT 'Hello, ODBC(MFC) World!' AS Message FROM DUAL"); db.OpenEx( strCon ); CRecordset rs( &db ); rs.Open( CRecordset::forwardOnly, strSQL ); CString strMessage; while( !rs.IsEOF() ) { rs.GetFieldValue( (short)0, strMessage ); _tprintf( _T("%sn"), (LPCTSTR)strMessage ); rs.MoveNext(); } rs.Close(); db.Close(); return 0; }
ソースコード(VC + MFC + ODBC + MySQL)
#include <afx.h> #include <afxdb.h> int _tmain( int argc, TCHAR* argv[] ) { CDatabase db; CString strCon = _T("Driver={MySQL ODBC 5.1 Driver};Server=localhost;UID=root;PWD=P@ssW0rd"); CString strSQL = _T("SELECT 'Hello, ODBC(MFC) World!' AS Message"); db.OpenEx( strCon ); CRecordset rs( &db ); rs.Open( CRecordset::forwardOnly, strSQL ); CString strMessage; while( !rs.IsEOF() ) { rs.GetFieldValue( (short)0, strMessage ); _tprintf( _T("%sn"), (LPCTSTR)strMessage ); rs.MoveNext(); } rs.Close(); db.Close(); return 0; }
コンパイル&リンク方法(Visual C++)
C:¥> cl hello.cpp
実行結果
Message Hello, ODBC(MFC) World!
-
Hello, ODBC(API) World!
Posted on 3月 21st, 2012 by cx20
ODBC(API)
ODBC(Open Database Connectivity)は、マイクロソフト社が提唱した DBMS 接続用の API 仕様である。
DBMS の差異は ODBC ドライバによって吸収される為、ODBC の手順にしたがってプログラムを作成すれば、基本的な差異を意識せず、プログラムすることができる。ODBCドライバ ファイル Microsoft Access Driver (*.mdb) ODBCJT32.DLL Microsoft Text Driver (*.txt; *.csv) ODBCJT32.DLL Microsoft Excel Driver (*.xls) ODBCJT32.DLL Microsoft dBase Driver (*.dbf) ODBCJT32.DLL Microsoft ODBC for Oracle MSORCL32.DLL Microsoft Paradox Driver (*.db ) ODBCJT32.DLL SQL Server SQLSRV32.DLL Microsoft Access Driver (*.mdb, *.accdb) ACEODBC.DLL SQL Server Native Client 10.0 SQLNCLI10.DLL ソースコード(VC + ODBC + Jet データベース)
#include <windows.h> #include <tchar.h> #include <stdio.h> #include <sqlext.h> #include <sql.h> int _tmain( int argc, TCHAR* argv[] ) { HENV henv; HDBC hdbc; HSTMT hstmt; _TCHAR szConnStr[1024]; _TCHAR szConnOut[1024]; SQLSMALLINT cchConOut; _TCHAR szSQL[256]; SQLTCHAR szColName[128]; SQLSMALLINT nBufSize; SQLSMALLINT nSqlType; SQLULEN nColSize; SQLSMALLINT nScale; SQLSMALLINT nNullable; SQLTCHAR szMessage[256]; SQLLEN nMessageLen; SQLRETURN nReturn; _tcscpy( szConnStr, _T("Driver={Microsoft Access Driver (*.mdb)};DBQ=hello.mdb") ); _tcscpy( szSQL, _T("SELECT 'Hello, ODBC World!' AS Message") ); SQLAllocEnv( &henv ); SQLAllocConnect( henv, &hdbc ); SQLDriverConnect( hdbc, NULL, (SQLTCHAR*)szConnStr, _tcslen(szConnStr), (SQLTCHAR*)szConnOut, _countof(szConnOut), &cchConOut, SQL_DRIVER_NOPROMPT ); SQLAllocStmt( hdbc, &hstmt ); SQLExecDirect( hstmt, (SQLTCHAR*)szSQL, SQL_NTS ); SQLDescribeCol( hstmt, 1, (SQLTCHAR*)szColName, _countof(szColName), &nBufSize, &nSqlType, &nColSize, &nScale, &nNullable ); SQLBindCol( hstmt, 1, SQL_C_TCHAR, szMessage, _countof(szMessage), &nMessageLen ); while( TRUE ) { nReturn = SQLFetch( hstmt ); if( nReturn != SQL_SUCCESS && nReturn != SQL_SUCCESS_WITH_INFO ) { break; } _tprintf( _T("%sn"), szColName ); _tprintf( _T("------------------n") ); _tprintf( _T("%sn"), szMessage ); } SQLFreeStmt( hstmt, SQL_DROP ); SQLDisconnect( hdbc ); SQLFreeConnect( hdbc ); SQLFreeEnv( henv ); return 0; }
ソースコード(VC + ODBC + ACE データベース)
#include <windows.h> #include <tchar.h> #include <stdio.h> #include <sqlext.h> #include <sql.h> int _tmain( int argc, TCHAR* argv[] ) { HENV henv; HDBC hdbc; HSTMT hstmt; _TCHAR szConnStr[1024]; _TCHAR szConnOut[1024]; SQLSMALLINT cchConOut; _TCHAR szSQL[256]; SQLTCHAR szColName[128]; SQLSMALLINT nBufSize; SQLSMALLINT nSqlType; SQLULEN nColSize; SQLSMALLINT nScale; SQLSMALLINT nNullable; SQLTCHAR szMessage[256]; SQLLEN nMessageLen; SQLRETURN nReturn; _tcscpy( szConnStr, _T("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=.\hello.accdb") ); _tcscpy( szSQL, _T("SELECT 'Hello, ODBC World!' AS Message") ); SQLAllocEnv( &henv ); SQLAllocConnect( henv, &hdbc ); SQLDriverConnect( hdbc, NULL, (SQLTCHAR*)szConnStr, _tcslen(szConnStr), (SQLTCHAR*)szConnOut, _countof(szConnOut), &cchConOut, SQL_DRIVER_NOPROMPT ); SQLAllocStmt( hdbc, &hstmt ); SQLExecDirect( hstmt, (SQLTCHAR*)szSQL, SQL_NTS ); SQLDescribeCol( hstmt, 1, (SQLTCHAR*)szColName, _countof(szColName), &nBufSize, &nSqlType, &nColSize, &nScale, &nNullable ); SQLBindCol( hstmt, 1, SQL_C_TCHAR, szMessage, _countof(szMessage), &nMessageLen ); while( TRUE ) { nReturn = SQLFetch( hstmt ); if( nReturn != SQL_SUCCESS && nReturn != SQL_SUCCESS_WITH_INFO ) { break; } _tprintf( _T("%sn"), szColName ); _tprintf( _T("------------------n") ); _tprintf( _T("%sn"), szMessage ); } SQLFreeStmt( hstmt, SQL_DROP ); SQLDisconnect( hdbc ); SQLFreeConnect( hdbc ); SQLFreeEnv( henv ); return 0; }
ソースコード(VC + ODBC + SQL Server)
#include <windows.h> #include <tchar.h> #include <stdio.h> #include <sqlext.h> #include <sql.h> int _tmain( int argc, TCHAR* argv[] ) { HENV henv; HDBC hdbc; HSTMT hstmt; _TCHAR szConnStr[1024]; _TCHAR szConnOut[1024]; SQLSMALLINT cchConOut; _TCHAR szSQL[256]; SQLTCHAR szColName[128]; SQLSMALLINT nBufSize; SQLSMALLINT nSqlType; SQLULEN nColSize; SQLSMALLINT nScale; SQLSMALLINT nNullable; SQLTCHAR szMessage[256]; SQLLEN nMessageLen; SQLRETURN nReturn; _tcscpy( szConnStr, _T("Driver={SQL Server};SERVER=(local);DATABASE=master;UID=sa;PWD=P@ssW0rd") ); _tcscpy( szSQL, _T("SELECT 'Hello, ODBC World!' AS Message") ); SQLAllocEnv( &henv ); SQLAllocConnect( henv, &hdbc ); SQLDriverConnect( hdbc, NULL, (SQLTCHAR*)szConnStr, _tcslen(szConnStr), (SQLTCHAR*)szConnOut, _countof(szConnOut), &cchConOut, SQL_DRIVER_NOPROMPT ); SQLAllocStmt( hdbc, &hstmt ); SQLExecDirect( hstmt, (SQLTCHAR*)szSQL, SQL_NTS ); SQLDescribeCol( hstmt, 1, (SQLTCHAR*)szColName, _countof(szColName), &nBufSize, &nSqlType, &nColSize, &nScale, &nNullable ); SQLBindCol( hstmt, 1, SQL_C_TCHAR, szMessage, _countof(szMessage), &nMessageLen ); while( TRUE ) { nReturn = SQLFetch( hstmt ); if( nReturn != SQL_SUCCESS && nReturn != SQL_SUCCESS_WITH_INFO ) { break; } _tprintf( _T("%sn"), szColName ); _tprintf( _T("------------------n") ); _tprintf( _T("%sn"), szMessage ); } SQLFreeStmt( hstmt, SQL_DROP ); SQLDisconnect( hdbc ); SQLFreeConnect( hdbc ); SQLFreeEnv( henv ); return 0; }
ソースコード(VC + ODBC + Oracle)
#include <windows.h> #include <tchar.h> #include <stdio.h> #include <sqlext.h> #include <sql.h> int _tmain( int argc, TCHAR* argv[] ) { HENV henv; HDBC hdbc; HSTMT hstmt; _TCHAR szConnStr[1024]; _TCHAR szConnOut[1024]; SQLSMALLINT cchConOut; _TCHAR szSQL[256]; SQLTCHAR szColName[128]; SQLSMALLINT nBufSize; SQLSMALLINT nSqlType; SQLULEN nColSize; SQLSMALLINT nScale; SQLSMALLINT nNullable; SQLTCHAR szMessage[256]; SQLLEN nMessageLen; SQLRETURN nReturn; _tcscpy( szConnStr, _T("Driver={Microsoft ODBC for Oracle};SERVER=ORCL;UID=scott;PWD=tiger") ); _tcscpy( szSQL, _T("SELECT 'Hello, ODBC World!' AS Message FROM DUAL") ); SQLAllocEnv( &henv ); SQLAllocConnect( henv, &hdbc ); SQLDriverConnect( hdbc, NULL, (SQLTCHAR*)szConnStr, _tcslen(szConnStr), (SQLTCHAR*)szConnOut, _countof(szConnOut), &cchConOut, SQL_DRIVER_NOPROMPT ); SQLAllocStmt( hdbc, &hstmt ); SQLExecDirect( hstmt, (SQLTCHAR*)szSQL, SQL_NTS ); SQLDescribeCol( hstmt, 1, (SQLTCHAR*)szColName, _countof(szColName), &nBufSize, &nSqlType, &nColSize, &nScale, &nNullable ); SQLBindCol( hstmt, 1, SQL_C_TCHAR, szMessage, _countof(szMessage), &nMessageLen ); while( TRUE ) { nReturn = SQLFetch( hstmt ); if( nReturn != SQL_SUCCESS && nReturn != SQL_SUCCESS_WITH_INFO ) { break; } _tprintf( _T("%sn"), szColName ); _tprintf( _T("------------------n") ); _tprintf( _T("%sn"), szMessage ); } SQLFreeStmt( hstmt, SQL_DROP ); SQLDisconnect( hdbc ); SQLFreeConnect( hdbc ); SQLFreeEnv( henv ); return 0; }
ソースコード(VC + ODBC + MySQL)
#include <windows.h> #include <tchar.h> #include <stdio.h> #include <sqlext.h> #include <sql.h> int _tmain( int argc, TCHAR* argv[] ) { HENV henv; HDBC hdbc; HSTMT hstmt; _TCHAR szConnStr[1024]; _TCHAR szConnOut[1024]; SQLSMALLINT cchConOut; _TCHAR szSQL[256]; SQLTCHAR szColName[128]; SQLSMALLINT nBufSize; SQLSMALLINT nSqlType; SQLULEN nColSize; SQLSMALLINT nScale; SQLSMALLINT nNullable; SQLTCHAR szMessage[256]; SQLLEN nMessageLen; SQLRETURN nReturn; _tcscpy( szConnStr, _T("Driver={MySQL ODBC 5.1 Driver};Server=localhost;UID=root;PWD=P@ssW0rd") ); _tcscpy( szSQL, _T("SELECT 'Hello, ODBC World!' AS Message") ); SQLAllocEnv( &henv ); SQLAllocConnect( henv, &hdbc ); SQLDriverConnect( hdbc, NULL, (SQLTCHAR*)szConnStr, _tcslen(szConnStr), (SQLTCHAR*)szConnOut, _countof(szConnOut), &cchConOut, SQL_DRIVER_NOPROMPT ); SQLAllocStmt( hdbc, &hstmt ); SQLExecDirect( hstmt, (SQLTCHAR*)szSQL, SQL_NTS ); SQLDescribeCol( hstmt, 1, (SQLTCHAR*)szColName, _countof(szColName), &nBufSize, &nSqlType, &nColSize, &nScale, &nNullable ); SQLBindCol( hstmt, 1, SQL_C_TCHAR, szMessage, _countof(szMessage), &nMessageLen ); while( TRUE ) { nReturn = SQLFetch( hstmt ); if( nReturn != SQL_SUCCESS && nReturn != SQL_SUCCESS_WITH_INFO ) { break; } _tprintf( _T("%sn"), szColName ); _tprintf( _T("------------------n") ); _tprintf( _T("%sn"), szMessage ); } SQLFreeStmt( hstmt, SQL_DROP ); SQLDisconnect( hdbc ); SQLFreeConnect( hdbc ); SQLFreeEnv( henv ); return 0; }
コンパイル&リンク方法(Visual C++)
C:¥> cl hello.c /link odbc32.lib
実行結果
Message ------------------ Hello, ODBC World!