CompactDatabase 方法回收本地 SQL Server 2005Compact Edition (SQL Server Compact Edition) 数据库中的浪费空间。该方法还用于更改数据库的排序顺序、加密和密码设置。
object.CompactDatabase(SourceConnection,DestConnection)
参数 | 说明 |
SourceConnection | 字符串值,指定与要压缩的源数据库的连接。如果 SourceConnection 指定的数据库已经打开,将出现错误。 |
DestConnection | 字符串值,指定与要通过压缩创建的目标数据库的连接。如果由 DestConnection 指定的数据库已存在或者已有一个同名文件,便会发生错误。 |
HRESULT CompactDatabase(BSTRSourceConnection, BSTR DestConnection);
SourceConnection 和 DestConnection 参数指定源数据库和目标数据库的属性。下表列出了可以为每个参数指定的连接属性。所有其他连接属性都将被忽略。
属性 | 说明 | ||
Provider | 指示用于连接到数据源的访问接口的名称。如果未指定此属性,将假定为 OLE DB Provider for SQL Server Compact Edition。如果源字符串中访问接口的名称与目标字符串中访问接口的名称不同,将出现错误。 | ||
Data Source | 指示数据库的名称。源连接信息和目标连接信息都需要使用此属性。 | ||
Locale Identifier | 指示新数据库的区域设置标识符 (LCID)。如果省略此属性,目标数据库将具有与系统区域设置相同的 LCID。 Locale Identifier 指定数据库中字符串比较的排序顺序。 | ||
SSCE:Database Password | 在数据库受密码保护时,指示密码。如果源数据库包含密码,则必须提供源数据库密码。如果在 DestConnection 字符串中省略此参数,新数据库将与源数据库具有相同的数据库密码。若要从目标数据库中删除密码,数据库密码必须设置为空字符串。数据库密码最大长度为 40 个字符。 | ||
SSCE:Encrypt Database | 指示是否加密新数据库。如果在 DestConnection 字符串中省略此参数,新数据库将与源数据库具有相同的加密设置。这是一个布尔值,在使用加密时应设置为 TRUE,而在不使用加密时应设置为 FALSE。
| ||
SSCE:Temp File Directory | 指定临时数据库的位置。如果在 DestConnection 字符串中省略此参数,当前数据库的位置将用作临时数据库的位置。 |
支持区域设置标识符值。对 Locale Identifier 值使用唯一的 LCID。若要查找唯一 LCID 值的列表,请参阅 COLLATE (SQL Server CompactEdition)。必须确保在创建数据库的设备上支持指定的区域设置。
如果在创建数据库时未指定 LCID 值,SQL Server Compact Edition 将使用系统区域设置。这与早期版本不同,早期版本在未提供 LCID 值时总是使用“英语”区域设置。
我的实例程序:
try
{
IJetEnginePtr jet(__uuidof(JetEngine));
jet->CompactDatabase("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=dbpicture.mdb;Jet OLEDB:Database Password=",\
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=res\\dbpicture.mdb;\
Jet OLEDB:Engine Type=5;Jet OLEDB:Database Password=");
}
catch(_com_error &e)
{
::MessageBox(NULL, (LPCTSTR)e.Description( ), " ", MB_OK) ;
}
MoveFileEx("res\\dbpicture.mdb","dbpicture.mdb",MOVEFILE_REPLACE_EXISTING);
MessageBox("数据库清空完毕!");