CString szfile//创建的mdb文件
::CoInitialize(NULL);
CString strConnect;
//64位程序
strConnect.Format(_T("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=%s"), szfile);
//32位程序
strConnect.Format(_T("Provider=Microsoft.JET.OLEDB.4.0;Data Source=%s"), szfile);
ADOX::_CatalogPtr pCatalog = NULL;
try
{
HRESULT hr = pCatalog.CreateInstance(__uuidof(ADOX::Catalog));
if (FAILED(hr))
{
_com_issue_error(hr);
}
else
{
pCatalog->Create(strConnect.AllocSysString());//Create MDB
}
}
catch (_com_error e)
{
AfxMessageBox(e.ErrorMessage());
}
_ConnectionPtr pConn;
pConn.CreateInstance(__uuidof(Connection));
pConn->Open(_bstr_t(strConnect), "", "", adModeUnknown);
//设置连接参数,可以修改表字段属性
pCatalog->PutActiveConnection((_variant_t)(IDispatch*)_connection);
//执行建表语句
CString sql = "";
_variant_t var;
pConn->Execute(sql.AllocSysString(),&var, 0);
//ACCESS表字段属性
/*szPropertiesX名称
Autoincrement = ,type 11 = adBoolean
Default = 默认值 ,type 12 = adVariant
Description = ,type 8 = adBSTR
Nullable = ,type 11 = adBoolean
Fixed Length = ,type 11 = adBoolean
Seed = ,type 3 = adInteger
Increment = ,type 3 = adInteger
Jet OLEDB:Column Validation Text = ,type 8 = adBSTR
Jet OLEDB:Column Validation Rule = ,type 8 = adBSTR
Jet OLEDB:IISAM Not Last Column = ,type 11 = adBoolean
Jet OLEDB:AutoGenerate = ,type 11 = adBoolean
Jet OLEDB:One BLOB per Page = ,type 11 = adBoolean
Jet OLEDB:Compressed UNICODE Strings = ,type 11 = adBoolean
Jet OLEDB:Allow Zero Length =允许空字符串 ,type 11 = adBoolean
Jet OLEDB:Hyperlink = ,type 11 = adBoolean
*/
CString szTable;//表名
CString szColumn;//字段名
LPCTSTR szPropertiesX = "Jet OLEDB:Allow Zero Length";//属性名
var = _variant_t(VARIANT_FALSE, VT_BOOL); //设置值
ADOX::_TablePtr pTable = pCatalog->Tables->GetItem(szTable);
if (pTable != nullptr)
{
ADOX::_ColumnPtr pColumn = pTable->Columns->GetItem(szColumn);
if (pColumn != nullptr)
{
ADOX::PropertyXPtr pPropertyX = pColumn->PropertiesX->GetItem(szPropertiesX);
if (pPropertyX != nullptr)
{
pPropertyX->PutValue(var);
}
}
}
pConn->Close();