2010年02月23日

Microsoft Jet(MDB)データベースの最適化/CDaoWorkspace

sqlite もそうですが、Microsoft Accessなどの
ファイルベースのデータベースソフトは、
定期的にデータ構造を最適化しないと肥大化します。

CDaoWorkspace::CompactDatabase
使うと簡単そうなので、やっつけ仕事で書いてみる。
AfxDaoTerm(); を忘れると、デバッグモードで例外が
発生するので注意。
#include <afxdao.h>
BOOL CompactDatabase(CString DbFile)
{
AfxDaoInit();
CString DbFileTmp = DbFile + ".tmp";
DeleteFile(DbFileTmp);

CDaoWorkspace ws;
ws.Open(NULL);
try
{
ws.CompactDatabase(DbFile, DbFileTmp);
}
catch (CDaoException* pException)
{
pException->Delete();
ws.Close();
AfxDaoTerm();
return (FALSE);
}

ws.Close();
AfxDaoTerm();

if(TRUE == DeleteFile(DbFile))
{
if(FALSE == CopyFile(DbFileTmp, DbFile, FALSE))
{
return (FALSE);
}
}
DeleteFile(DbFileTmp);

return (TRUE);
}
posted by ぽっぽファクトリー at 00:26 | Comment(0) | TrackBack(0) | ソフトウェア開発
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/35497101
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック