C#/Winform
[C#] Access DB 파일 CompactDatabase 수행하기
kjun.kr
2022. 3. 29. 14:39
728x90
728x170
Access DB 파일은 저장을 할수록 점점 사이즈가 커진다.
Access 에서 아래 버튼을 누르면 로그등의 내용이 제거되면서 CompactDatabase 가 수행되는데
이때 사이즈가 원래 사이즈로 돌아간다.
이를 C# 코드로 처리하는 방법을 알아보자
먼저 아래처럼 참조 추가를 눌러
'Microsoft Office 16.0 Access Database Engine Object Library' 항목을 추가한다.
그리고 아래와 같이 코드해서 처리하면 끝.
using System.IO;
using Microsoft.Office.Interop.Access.Dao;
#region CompactAccessDB
/// <summary>
/// CompactDatabase 를 수행합니다.
/// </summary>
public static void CompactAccessDB(string dbFilePath)
{
try
{
if (!File.Exists(dbFilePath))
{
return;
}
DBEngine dbEngine = new DBEngine();
string directroy = Path.GetDirectoryName(dbFilePath);
string filename = Path.GetFileNameWithoutExtension(dbFilePath);
string extension = Path.GetExtension(dbFilePath);
string compactFilePath = Path.Combine(directroy, filename + "_temp" + extension);
string password = "1234";
// 오류로 인해 temp 파일이 제거 되지 않은 경우 대비
if (File.Exists(compactFilePath))
{
File.Delete(compactFilePath);
}
dbEngine.CompactDatabase(dbFilePath, compactFilePath, false, false, "MS Access;PWD=" + password);
File.Delete(dbFilePath);
File.Move(compactFilePath, dbFilePath);
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
위 메서드를 거치면 CompactDatabase 가 수행된다.
728x90
그리드형