Visual C++プログラムによるODBCデータソースの設定

3402 ワード

ODBC(Open Database Conectivity)つまりオープンデータベース相互接続は、Windowsのオープン構造の重要な部分としてすでに多くのWindowsプログラマーに熟知されており、ODBCの仕事はデータベースメーカーが提供するドライバに依存し、ODBC APIを使用する場合、WindowsのODBC管理プログラムは、データベースアクセスの要求を正しいドライバ、ドライバに伝達するSQL文を使用して、DBMSがデータベース・アクセスを完了するように指示するため、ODBCの存在はアプリケーション・データベース・プログラムの開発に非常に強力な能力と柔軟性を提供します.
---ODBCをデータベースと一緒に動作させるには、DSNまたはデータソース名を定義することによって、データベースをODBCドライバマネージャに登録する必要があります.通常、システムコントロールパネルを手動で開き、ODBCデータソースマネージャを実行し、データソースを手動で構成するしかありませんが、この作業はユーザーにとって複雑すぎて、プログラムでユーザーの代わりにこれらの構成作業を完了することを考慮する必要があります.
----そのため、多くのプログラマーは自分で作成したデータベースソフトウェアを発表する時、優れたインストーラがODBCデータソースを自動的に設定することを望んでいます.現在、InstallShieldなどの優れたインストーラ作成ソフトウェアは私たちがこのような機能を実現するのに役立ちますが、柔軟性が欠けていて、プログラマーはそれを完全に制御できません.実際には、私達は完全に自分でいくつかのプログラムを編纂してこのような機能を実現することができて、実現する方法はいくつかあって、1つの方法はプログラムでWindowsレジストリを修正するので、プログラマーはWindows API関数でHKEY_を増加して変更することができますLOCAL_MACHINESoftwareODBC下のODBC.INIのキー値、この方法は煩雑です.プログラムでODBC APIを使用する方法をお勧めします.プログラマは、いつでもVisual C++で作成されたプログラムでこれらのAPI関数を呼び出してODBCデータソースを設定することができます.
----次はMFCでこの機能を実現する方法を説明します.
----まず、Visual C++を開き、FileメニューからNewを選択し、MFC AppWizard(exe)クラスの項目を選択します.Project nameはtryとし、OKキーを押します.次のStep 1画面でDialog basedを選択します.後のオプションを使用する必要がないので、Finishキーを押すと、新しい項目が生成されます.上記の作業が完了したら、左側のWorkspaceウィンドウでResourceViewを選択し、try resourcesのDialogリソースを開き、IDD_を選択して開きます.TRY_DIALOGダイアログウィンドウ、Controlメニューウィンドウでボタンアイコンをクリックし、IDD_に戻るTRY_DIALOGダイアログウィンドウをクリックすると、Button 1というボタンが生成されます.このボタンを選択してマウスの右ボタンを押し、ポップアップメニューからPropertiesオプションを選択し、表示されたダイアログボックスでCaption項目のButton 1値をSetup ODBCに変更し、このダイアログボックスを閉じます.このボタンを選択してマウスの右ボタンを押し、ClassWizardを選択し、表示されたダイアログウィンドウで、Object Ids選択IDC_BUTTON 1,MessagesでBN_をダブルクリックCLICKED、この時Add Member Functionダイアログウィンドウを弾き出して、Member function nameはOnButton 1で、OKキーを押します.メンバーfunctionsオプションでonButton 1 ON_をダブルクリックIDC_BUTTION1:BN_CLICKEDは、出現したvoid CTryDlg::OnButton 1()関数において、//TODO:Add your control notification handler code hereという注釈文を以下のODBC API関数文で置換する.
  SQLConfigDataSource(NULL,ODBC_ADD
_SYS_DSN,"Microsoft Access Driver (*.mdb)\0","
DSN=TryDB\0DBQ=D:\\Database\\
try.mdb\0DEFAULTDIR=D:\\DATABASE\0\0");
  '

----上記の文は、設定によって変更できます.SQLConfigDataSourceには、一般的にODBC_ADD_DSN:新しいユーザデータソース、ODBC_を追加CONFIG_DSN:存在するユーザデータソースを変更し、ODBC_REMOVE_DSN:存在するユーザデータソースを削除し、ODBC_ADD_SYS_DSN:新しいシステムデータソース、ODBC_を追加CONFIG_SYS_DSN:存在するシステムデータソースを変更し、ODBC_REMOVE_SYS_DSN:存在するシステムデータソースを削除し、ODBC_REMOVE_DEFAULT_DSN:欠落しているデータソースの説明部分を削除します.なお、SQLConfigDataSourceODBC API関数を使用する場合は、システムを含むodbcinst.を宣言する必要があります.hヘッダファイルなので、workspaceウィンドウのFileViewを選択してHeader Filesのtryを開きます.h、#include"odbcinst.h"を追加し、このヘッダファイルを追加しないと、システムコンパイル時にundeclared identifierエラーが表示され、上記の手順を完了した後、すぐにこのプロジェクトをコンパイルしてリンクすると、次のエラーが発生します.
tryDlg.obj : error LNK2001: unresolved
external symbol _SQLConfigDataSource@16
Debug/try.exe : fatal error LNK1120: 
1 unresolved externals

----エラーが見つからないために諦めた人もいるかもしれませんが、SQLConfigDataSourceというAPI関数を使用する場合はodbccp 32を使用する必要があるからです.dllは、Microsoftが提供する32ビットODBCのインストールと管理のDLLであり、16ビットであればodbcinst.を使用する必要があります.dll,odbccp32.dllにはimport libraryがあるので、解決策はこのodbccp 32をlibが私たちのプロジェクトに追加すると、プロジェクトシステムのメニュー項目を開き、Add to Projectサブメニューを選択し、その中でFiles項目を選択し、VCインストールディレクトリの下のvclibディレクトリを開き、ファイルタイプはLibrary Files(.lib)を選択し、その中のOdbccp 32を選択することができます.libを押してOKキーを押し、再コンパイルすればいいです.このプログラムを実行すると、ダイアログウィンドウがポップアップされ、Setup ODBCキーが押されます.その後、コントロールパネルのODBCデータソースマネージャまたはレジストリを通じて実行結果を表示することができます.データベースはすでに登録されています.