文章分類

C# (27) ASP.NET (13) SQL (7) ORACLE (5) JAVA (2) SQLSERVER2008 (2) 大家都在問的事 (2) ACCESS (1) ANDRIOD (1) JQUERY (1) python (1) 雜談 (1)

關於我自己

我的相片
程式初心者 JAVA, ASP.NET, C# ,SQL

2011年8月25日 星期四

【C#】刪除ACCESS資料列後, ACCESS容量太大

因為從C#內刪除資料後, 只是暫時的刪除, 所以你會看到一個什麼資料都沒有的DB還有100多MB的大小..所以DELETE後要從程式中再進行處理

首先先引用

using System.IO;
using JRO;
接下來在程式裡撰寫以下程式



 string mdbPath = "C:\\DB_EQP.mdb";//資料庫路徑
 if( !File.Exists(mdbPath) ) //检查数据库是否已存在
{
throw new Exception("資料庫不存在,無法壓縮");
}
//定義臨資料庫名稱
string temp = DateTime.Now.ToString("HH:mm:ss") + ".bak";
 temp = temp.Split(':')[0].ToString() + temp.Split(':')[1].ToString() + temp.Split(':')[2].ToString();
temp = mdbPath.Substring(0, mdbPath.LastIndexOf("\\")+1) + temp;
//定義臨時資料庫路徑連接字串
string temp2 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + temp;
//定義目標資料庫路徑連接字串
string mdbPath2 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + mdbPath;
//新增一個JetEngineClass物件
JRO.JetEngineClass jt = new JRO.JetEngineClass();
//使用JetEngineClass物件的CompactDatabase方法壓縮資料庫
          
jt.CompactDatabase( mdbPath2, temp2 );
//覆蓋原本資料庫
File.Copy( temp, mdbPath, true );
//刪除臨時資料庫
File.Delete( temp );

沒有留言:

張貼留言