介紹
下面這段c# **可以用來壓縮和修復access資料庫,不管它是乙個簡單的".mdb"access資料庫還是乙個".mdw"網路共享資料庫,這個過程和你在用ms access應用程式中使用的"工具-資料庫實用工具-壓縮和修復"時執行的操作完全一樣.例項**使用了"遲繫結"(執行中在記憶體中建立com物件),這樣就不需要在工程中加入com引用了,也不需要在pc上安裝ms access應用程式.只需要乙個jet引擎(jet引擎包含在mdac安裝包中,在windows nt4以後的版本中,系統已經自帶了這個引擎).
c#操作access資料庫的背景
1. 例項**
只需呼叫compactaccessdb函式即可壓縮和修復目標資料庫.
2. 引數:
connectionstring – 用來連線到access資料庫.
mdwfilename –要壓縮的mdb檔案的全名(路徑+檔名).
由於jet引擎的限制,執行此方法壓縮access資料庫會把結果生成為乙個新檔案,所以我們要還需要把這個新的access檔案拷貝到目的位置覆蓋原來未壓縮檔案.
當呼叫此方法時請確認被壓縮資料庫無開啟的連線.
c#操作access資料庫 **如下:
程式**
/// mbd compact method (c) 2004 alexander youmashev
/// !!important!!
/// !make sure there's no open connections
/// to your db before calling this method!
/// !!important!!
///
///
connection string to your db
///
full name
/// of an mdb file you want to compress.
public static void compactaccessdb(string connectionstring, string mdwfilename)
;//invoke a compactdatabase method of a jro object
//pass parameters array
objjro.gettype().invokemember("compactdatabase",
system.reflection.bindingflags.invokemethod,
null,
objjro,
oparams);
//database is compacted now
//to a new file c://tempdb.mdw
//let's copy it over an old one and delete it
system.io.file.delete(mdwfilename);
system.io.file.move("c://tempdb.mdb", mdwfilename);
//clean up (just in case)
system.runtime.interopservices.marshal.releasecomobject(objjro);
objjro=null;
}手頭沒有microsoft access,c#如何操作access資料庫?
寫乙個小型程式,手頭沒有microsoft access,如何建立資料庫,一切依然簡單.
首先引用c:/program files/common files/system/ado/msadox.dll,該dll包含adox命名空間;
接著引用c:/program files/common files/system/ado/msjro.dll,該dll包含jro命名空間
注意:如,匯入dll不成功,手動把com元件 匯入為 .net元件,在用vs.net工具匯入
程式**
using system;
using system.io;
using adox; //該命名空間包含建立access的類(方法)--解決方案 ==> 引用 ==> 新增引用 ==> 遊覽找到.dll
using jro; //該命名空間包含壓縮access的類(方法)
public class access
// 可以加上密碼,這樣建立後的資料庫必須輸入密碼後才能開啟
mdbpath = "provider=microsoft.jet.oledb.4.0;data source=" + mdbpath;
// 建立乙個catalogclass物件的例項,
adox.catalogclass cat = new adox.catalogclass();
// 使用catalogclass物件的create方法建立access資料庫
cat.create(mdbpath);
}///壓縮修復access資料庫,mdbpath為資料庫絕對路徑
public void compact( string mdbpath )
//宣告臨時資料庫的名稱
string temp = datetime.now.year.tostring();
temp += datetime.now.month.tostring();
temp += datetime.now.day.tostring();
temp += datetime.now.hour.tostring();
temp += datetime.now.minute.tostring();
temp += datetime.now.second.tostring() + ".bak";
temp = mdbpath.substring(0, mdbpath.lastindexof("//")+1) + temp;
//定義臨時資料庫的連線字串
temp2 = "provider=microsoft.jet.oledb.4.0;data source=" + temp;
//定義目標資料庫的連線字串
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 );
}/// 備份資料庫,mdb1,源資料庫絕對路徑; mdb2: 目標資料庫絕對路徑
public void backup( string mdb1, string mdb2 )
trycatch( ioexception ixp )
}///恢復資料庫,mdb1為備份資料庫絕對路徑,mdb2為當前資料庫絕對路徑
public void recover( string mdb1, string mdb2 )
trycatch( ioexception ixp )}}
用C 壓縮和修復Access資料庫
介紹 下面這段c 可以 用來壓縮和修復access資料庫,不管它是乙個簡單的 mdb 還是乙個 mdw 網路共享資料庫,這個過程和你在用ms access應用程式中使用的 工具 資料庫實用工具 壓縮和修復 時執行的操作完全一樣.例項 使用了 遲繫結 執行中在記憶體中建立com物件 這樣就不需要在工程...
C 壓縮Access資料庫
壓縮資料庫 資料庫鏈結 要壓縮的mdb檔案的全名 static void compactaccessdb string dbfilename objjro.gettype invokemember compactdatabase system.reflection.bindingflags.invo...
壓縮access資料庫
遇到乙個問題,使用的是accesss資料庫,在載入資料庫中的資訊的時候,速度特別慢,有時候一次查詢最終會卡15秒左右,然後才能得到結果,跟蹤發現卡的地方在sqlexecdirect中,已經是odbc api了。開啟資料庫看也沒發現啥問題,後來點了access上邊的 壓縮和修復資料庫 工具,資料庫從原...