○SDKをMFCにしてODBC操作

@Accessにて新規データーベースの作成して新規テーブルを追加
テーブル名 : テーブル1
フィールドを適当に追加して適当なデータを登録します。

AODBCアドミニストレータでのデータソース登録
データソース名 : ODBCAccessDriver ←適当に付けた名前

BSDKコンソールアプリケーションを新規作成
コンソールアプリケーションをMFC化
SDKでMFCのCStringクラスなどを使う


#include <afxwin.h> //←MFCを追加
#include <afxdb.h>   //←追加します。
#include <stdio.h>


int main(){
	//接続文字列生成
	CString strCon = "DSN=ODBCAccessDriver;UID=Admin;PWD=";
	//Windows認証でSQLServerを使用する場合 //CString strCon = "DSN=SQLServerTest;";

	CDatabase db;
	//接続
	db.OpenEx( _T( strCon ), CDatabase::noOdbcDialog );
		//db.OpenEx( _T( strCon ), CDatabase::openReadOnly | CDatabase::noOdbcDialog );//読み込み専用
		//CDatabase::openReadOnly   データ ソースを読み取り専用で開きます。
		//CDatabase::noOdbcDialog   必要な情報が提供されているかどうかにかかわらず、ODBC 接続のダイアログ ボックスを表示しません。
		//CDatabase::forceOdbcDialog   ODBC 接続のダイアログ ボックスを常に表示します。

	//値が帰ってくるSQLを発行する
	//実行
	CRecordset rs( &db );
	try{
		rs.Open( CRecordset::forwardOnly, _T("select * from テーブル1") );//SQLコマンドの実行

		CODBCFieldInfo fi;

		short nFields = rs.GetODBCFieldCount();

		//フィールド名を表示
		if (!rs.IsEOF()) {
			for(short index = 0; index < rs.GetODBCFieldCount(); index++ )   {
				rs.GetODBCFieldInfo(index, fi);
				printf("%s\n",fi.m_strName);
			}
		}

		//値を表示
		while( !rs.IsEOF() )
		{
			for(short index = 0; index < rs.GetODBCFieldCount(); index++ )   {
				CString strValue;
				rs.GetFieldValue( index, _T( strValue ) );
				printf("%s\n",strValue);
			}
			rs.MoveNext();
		}
	}catch(...){printf("err\n");}//SQL文がエラーを発生したときはここで捕まりますがメモリリークのように見えますが、ODBCドライバのほうでそのうち自動的に解放されるみたいです
	rs.Close();


	//値が帰ってこないSQLを発行する
	//実行
	db.BeginTrans();//トランザクション開始
	try{
		db.ExecuteSQL("create table test(a text,b text)");		//各種、SQLコマンドの実行 複数実行できます
		//db.ExecuteSQL("insert into test(a,b) values('inaba','minoru')");	//各種、SQLコマンドの実行 複数実行できます
		//db.ExecuteSQL("delete from test where a='inaba'");		//各種、SQLコマンドの実行 複数実行できます
		//db.ExecuteSQL("DROP TABLE test");			//各種、SQLコマンドの実行 複数実行できます

	}catch(...){printf("err\n");}//SQL文がエラーを発生したときはここで捕まりますがメモリリークのように見えますが、ODBCドライバのほうでそのうち自動的に解放されるみたいです

	db.CommitTrans();//トランザクションの完了

	db.Close();

	return 0;
}


→もう少し細かいことが知りたい時は、
MFC ODBCを使ったデータベースアクセス


▲トップページ > Windows と C++