Chinaunix首页 | 论坛 | 博客
  • 博客访问: 744044
  • 博文数量: 769
  • 博客积分: 6000
  • 博客等级: 准将
  • 技术积分: 4985
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-15 16:37
文章分类

全部博文(769)

文章存档

2011年(1)

2008年(768)

我的朋友

分类:

2008-10-15 16:40:13

      ACCESS的数据库引擎MS JET 4.0是目前应用很广的小型数据库引擎,它具有使用简单,费用低廉(基本上是免费),对机器的配置要求低和对操作者的技术要求低等特点。在使用MS JET的时候如果我们的程序能够自动建立和维护所用的*.MDB文件,那么我们的小程序将会显得更专业。下面简单介绍一下如何动态建立*.MDB文件和压缩*.MDB文件的操作,以下代码都是基于ADO数据编程。

    1) 动态建立*.MDB文件。

    #include

    #include

    #include

    #include

    #pragma comment(lib, "comsupp.lib")

    #pragma comment(lib, "shlwapi.lib")

 

    CComPtrCatalog;

    HRESULT hr = Catalog.CoCreateInstance(L"ADOX.Catalog");

    if (FAILED(hr))

    {

     throw _com_error(hr, NULL);

    }

 

    static const TCHAR szConnStr[] =

     _T("Provider=Microsoft.Jet.OLEDB.4.0;")

     _T("Data Source=C:\\TEST1.MDB;");

 

    CComVariant varConn;

    hr = Catalog->Create(CComBSTR(szConnStr), &varConn);

    if (FAILED(hr))

    {

     throw _com_error(hr, NULL);

    }

    上面使用了ADOX接口和智能指针的方法,如果你使用#import指令来引入ADOX库那么就更方便了。
    #import "c:\program files\common files\system\ado\msadox.dll" using namespace ADOX;

    _CatalogPtr pCatalog; pCatalog.CreateInstance(__uuidof(Catalog));

    pCatalog->Create(CComBSTR(szConnStr));    得到了Catalog对象就可以操作它里面的子对象(Groups, Procedures, Tables, Views, Users)等,例如要检查某个表是否已经存在 :
    TablesPtr pTables = pCatalog->GetTables();

    _Table* pTable = NULL;

    if (pTables->get_Item(CComVariant(_T("Table Name")), &pTable) == S_OK)

    {

        // OK 指定的表存在。

    } 使用智能指针的方法同理。
    CComPtrTables = NULL;

    Catalog->get_Tables(&Tables);

    CComPtrTable = NULL;

    Tables->get_Item(CComVariant(_T("Table Name")), &Table);

[1]  

【责编:landy】

--------------------next---------------------

阅读(328) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~