初日 最新 目次 MAIL HOME


*-- To Tell The Truth --*
Cruz
MAIL
HOME

My追加

2003年08月26日(火)
接続完了

懸案であったホスト文字列のなぞが解けたので、無事DBに接続する事ができた。
ふぅ〜、やれやれ。
あとは作りこめばいいだけだ。

ひさびさのソース覚書き公開(笑)




class COCCIConnect{
public:
 COCCIConnect();
 virtual ~COCCIConnect();
 BOOL LoginCheck(HWND);   // 接続チェック

private:
 Environment *occi_env;
 Connection *occi_con;
 Statement *occi_st;
 ResultSet *occi_rs;

 void login_com_error(SQLException &, HWND); // DB接続エラー
 void dump_com_error(exception &, HWND);   // DB接続以外のエラー

};

COCCIConnect::COCCIConnect()
{
 occi_rs = NULL;
 occi_env= Environment::createEnvironment(Environment::DEFAULT);
}

COCCIConnect::~COCCIConnect()
{
 occi_env->terminateConnection(occi_con);
}

BOOL COCCIConnect::LoginCheck(HWND hWnd)
{
 try{
   occi_con = occi_env->createConnection(gDB.cpUserID, gDB.cpPassword, gDB.cpServerName);
 }
 catch(SQLException &se){
  login_com_error(se, hWnd);
  return FALSE;
 }
 catch(exception &e){
  dump_com_error(e, hWnd);
  return FALSE;
 }

 return TRUE;
}

void COCCIConnect::login_com_error(SQLException &se, HWND hWnd)
{
 char cpMsg[CHAR_MAX * 3];

 sprintf(cpMsg, "ログインに失敗しました。\n\nCode[%08lx] Code meaning[%s]\n", se.getErrorCode(), se.getMessage());

 MessageBox(hWnd,
      cpMsg,
      "DB CONNECT ERROR",
      MB_OK | MB_ICONSTOP);
}

void COCCIConnect::dump_com_error(exception &e, HWND hWnd)
{
 char cpMsg[CHAR_MAX * 3];

 sprintf(cpMsg, "データベース接続に失敗しました。\n\n%s\n", e.what());

 MessageBox(hWnd,
      cpMsg,
      "DB CONNECT ERROR",
      MB_OK | MB_ICONSTOP);
}


gDB.cpServerNameってとこがホスト文字列。
oraocci9.libとoci.libのリンクを忘れずに。
occi関連のヘッダファイルのインクルードも。

あと、なんかエラーが出てOCCIが組み込めないって人。
あたまで#define WIN32COMMONしてやってください。
おそらくそれをすることによって、windows用のC++になるのだろう。
OCCIは、win専用ってものじゃないからね。