Шаг 20 - CompactDatabase(), оптимизация и преобразование версий

Эта функция позволяет уплотнить базу данных и оптимизировать доступ. Если вы интенсивно работаете с базами данных, т.е. удаляете, вставляете и так далее, то в базе данных появляются пустоты. Еще эта функция поможет, если Вы переводите проект из старых версий. Эта функция принадлежит классу CDaoWorkspace:

static void PASCAL CompactDatabase
(
	LPCTSTR lpszSrcName,		// это будем уплотнять
	LPCTSTR lpszDestName,		// это получим
	LPCTSTR lpszLocale = dbLangGeneral,	// язык
	int nOptions = 0 );		// это опции для смены версии и шифровки
	throw( CDaoException, CMemoryException 
);

static void PASCAL CompactDatabase
(
	LPCTSTR lpszSrcName, 
	LPCTSTR lpszDestName, 
	LPCTSTR lpszLocale, 
	int nOptions, 
	LPCTSTR lpszPassword );
	throw( CDaoException, CMemoryException 
);

Имя должно указывать на закрытую базу данных, Вы должны указывать и расширения. В имени вы можете использовать пути UNC (Смотри MSDN: "Шаг 18 - Universal Naming Convention - UNC"). Пароль может понадобиться, если Вы хотите уплотнить базу данных защищенную паролем. Этот параметр требует специального форматирования. Вот так:

;PWD = lpszPassword

Язык отвечает за кодировку символов в базе данных и естественно влияет на сортировку.

Опции могут быть следующими:

В документации написано, что этот метод можно применить для копирования базы данных. Эта функция является аналогом функции MS Access.

Ну пример маленький. Специально с паролем:

void CTestRepDlg::OnButton1() 
{
	CDaoWorkspace cd;
	cd.CompactDatabase("c:/step.mdb","c:/new.mdb",
		dbLangCyrillic,dbEncrypt,";PWD=123");
}

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 11.03.2001