V alentine
B ooks
ヴァレンタイン書店

●VisualStudioの紹介

●画面プログラムの作り方

●コンソールプログラムの作り方

●DBプログラムの作り方(SELECT)

●DBプログラムの作り方(INSERT)

●DBプログラムの作り方(UPDATE)

●DBプログラムの作り方(DELETE)

●DB最適化

●AmazonMWSの使用方法

●YahooAPIの使用方法

●楽天APIの使用方法

●Webからのデータ取得方法

●レジストリを利用した利用者認証機能

●プログラム間の値の引継ぎ方法

●プログラム実行パスの取得

●デバッグ方法

●ショートカットキー

●設定

●64ビットOS対応

●ヴァレンタイン書店Web支店

●店長ブログ

                                        

DB最適化の方法

アプリでDBを継続して追加、更新、削除していくと、ファイルの断片化によりMDBのサイズはどんどん増大していきます。
このサイズ増大を放置するとMDBのファイルサイズが大きくなりすぎて、ディスク容量を圧迫します。
MDBのサイズが2GBに到達するとそのMDBが使用不可能になったと記憶しています。(今の最新OSやAccessでは違うかもしれませんが)
MDBを使用するアプリを使用し続けるには、MDBの無駄な領域を開放する"最適化"という処理を組み込む必要があります。
私の場合はアプリ起動時にはMDB最適化処理を行うようにしています。

3行目 jroJet.CompactDatabase()というメソッドでDBの最適化を行います。
一番目の引数に最適化を行いたい対象のMDBを、二番目の引数に最適化後のMDBを指定します。
このサンプルではmdb1からmdb2に最適化データを写し、一旦mdb1を削除して、mdb2からmdb1にデータを写し、 mdb2を削除するという事をやっています。
MDBの名称を最適化前後で変えず最適化を行うために、最適化を2回しています。
(最適化を2回しなくてもいいのかもしれませんが)

DB最適化を行うには「Microsoft Jet and Replication Objects 2.6 Library」への参照が必要です。
ソリューションエクスプローラ 参照設定で右クリックし、参照の追加をクリック
Microsoft Jet and Replication Objects 2.6 Libraryを選択し、OKボタンをクリックする。



C#のOLEDBを用いたUPDATEプログラム サンプル
1  //DB最適化処理
2  JRO.JetEngine jroJet = new JRO.JetEngine();
3  jroJet.CompactDatabase(
4      "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\mdb1.mdb;User ID=Admin;Jet OLEDB:Database Password=xxxx",
5      "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\mdb2.mdb;User ID=Admin;Jet OLEDB:Database Password=xxxx");
6  
7  File.Delete(C:\Program Files\mdb1.mdb);
8  
9  jroJet.CompactDatabase(
10     "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\mdb2.mdb;User ID=Admin;Jet OLEDB:Database Password=xxxx",
11     "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\mdb1.mdb;User ID=Admin;Jet OLEDB:Database Password=xxxx");
12 
13 File.Delete(C:\Program Files\mdb2.mdb);