Re[5]: Програмное создание БД Access
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 03.06.06 12:08
Оценка:
Здравствуйте, <Аноним>, Вы писали:

K>>>>Можно с помощью ADOX

M>>>А можно подробнне? =))
M>>>Желательно с примером.

OE>>http://gzip.rsdn.ru/?article/files/progs/BatchAccess.xml
Автор(ы): Никита А. Зимин
Дата: 14.12.2005
BatchAccess — небольшая утилита, написанная в компании Русские Информационные Технологии. Мы создали ее в ходе работы над программным продуктом, работающим с базой данных MS Access.
Целью было — перейти от описания базы средствами Access к описанию в виде SQL-скрипта.

А>Это все конечно хорошо, но вязаться с фреймверком нехочется!

ADOX сам по себе фреймворка не требует, просто в этом примере он используется из .NET. Вот тебе например copy/paste из MSDN:

// BeginCreateDatabaseCpp
#import "msado15.dll"
#import "msadox.dll" no_namespace

#define TESTHR(x) if FAILED(x) _com_issue_error(x);

#include "iostream.h"
#include "stdio.h"
#include "conio.h"

//Function declarations
void CreateDatabaseX(void);

//------------------------------------------------------------//
//Main Function                                    
//Purpose:  Test Driver
//------------------------------------------------------------//
void main()
{
    HRESULT hr = S_OK;

    hr = ::CoInitialize(NULL);
    if(SUCCEEDED(hr))
    {
        CreateDatabaseX();

        //Wait here for the user to see the output
        printf("Press any key to continue...");
        getch();
        
        ::CoUninitialize();
    }
}

//------------------------------------------------------------//
//CreateDatabaseX                                
//Purpose:  create a new Jet database with the Create method
//------------------------------------------------------------//
void CreateDatabaseX()
{    
    HRESULT hr = S_OK;

    // Define ADOX object pointers.
    // Initialize pointers on define.
    // These are in the ADOX::  namespace.
    
    _CatalogPtr m_pCatalog = NULL;

    
    //Set ActiveConnection of Catalog to this string
    _bstr_t strcnn("Provider='Microsoft.JET.OLEDB.4.0';"
                "Data source = c:\\new.mdb");
    try
    {
        TESTHR(hr = m_pCatalog.CreateInstance(__uuidof (Catalog)));
        m_pCatalog->Create(strcnn);
        printf("Database 'c:\\new.mdb' is created.\n");
    }
    catch(_com_error &e)
    {
        // Notify the user of errors if any.
        _bstr_t bstrSource(e.Source());
        _bstr_t bstrDescription(e.Description());
          
        printf("\n\tSource :  %s \n\tdescription : %s \n ",
            (LPCSTR)bstrSource,(LPCSTR)bstrDescription);

    }
    catch(...)
    {
        cout << "Error occured in CreateDatabaseX...."<< endl;
    }

}
// EndCreateDatabaseCpp

ms-help://MS.MSDNQTR.v80.en/MS.MSDN.v80/MS.WIN32COM.v10.en/ado270/htm/admthcreatexvc.htm
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.