○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++