ADO 创建ACCESS空数据库 并设置字段属性

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();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值