如何用eVC访问SQLCE数据库

来源:互联网 发布:原油eia数据最新 编辑:程序博客网 时间:2024/04/29 03:23

    HRESULT hr;
    IDBInitialize *pIDBInitialize;
    IDBCreateSession *pIDBCreateSession;
    IDBCreateCommand *pIDBCreateCommand;
    ICommandText *pICommandText;
    IDBProperties *pIDBProperties;
    IUnknown *pIUnknown;
    DBPROP dbprop[1];
    DBPROPSET dbpropset[1];

    hr = ::CoInitializeEx(NULL,COINIT_MULTITHREADED);

    if (FAILED(hr))
    {
     return TRUE;
    }

    hr = CoCreateInstance(CLSID_SQLSERVERCE_2_0, 0, CLSCTX_INPROC_SERVER,
         IID_IDBInitialize, (void**)&pIDBInitialize);

    if (FAILED(hr))
    {
     return TRUE;
    }

    dbprop[0].dwPropertyID = DBPROP_INIT_DATASOURCE;
    dbprop[0].dwOptions = DBPROPOPTIONS_REQUIRED;
    dbprop[0].vValue.vt = VT_BSTR;
    dbprop[0].vValue.bstrVal = SysAllocString(L"//Storage Card//Inspect.sdf");     if (dbprop[0].vValue.bstrVal == NULL)
    {
     return TRUE;
    }

    dbpropset[0].guidPropertySet = DBPROPSET_DBINIT; 
    dbpropset[0].cProperties = sizeof(dbprop) / sizeof(dbprop[0]);
    dbpropset[0].rgProperties = dbprop;

    hr = pIDBInitialize->QueryInterface(IID_IDBProperties,(void**)&pIDBProperties);

    if (FAILED(hr))
    {
     return TRUE;
    }

    hr = pIDBProperties->SetProperties(sizeof(dbpropset)/sizeof(dbpropset[0]),dbpropset);

    if (FAILED(hr))
    {
     return TRUE;
    }

    hr = pIDBInitialize->Initialize();

    if (FAILED(hr))
    {
     return TRUE;
    }

    hr = pIDBProperties->QueryInterface(IID_IDBCreateSession,(void**)&pIDBCreateSession);

    if (FAILED(hr))
    {
     return TRUE;
    }

    hr = pIDBCreateSession->CreateSession(NULL,IID_IUnknown,&pIUnknown); //Need uuid.lib

    if (FAILED(hr))
    {
     return TRUE;
    }

    hr = pIUnknown->QueryInterface(IID_IDBCreateCommand,(void**)&pIDBCreateCommand);

    if (FAILED(hr))
    {
     return TRUE;
    }

    hr = pIDBCreateCommand->CreateCommand(NULL,IID_ICommandText,(IUnknown **)&pICommandText);

    if (FAILED(hr))
    {
     return TRUE;
    }

    hr = pICommandText->SetCommandText(DBGUID_SQL,L"INSERT INTO t_InspectTask(f_TaskID,f_Year,f_Month,f_TaskSequence,f_TaskName,f_TaskCategory,f_TaskDate) VALUES(2,2006,12,1,'WTTL2',1,'2007-12-31')");

    if (FAILED(hr))
    {
     return TRUE;
    }

    hr = pICommandText->Execute(NULL,IID_NULL,NULL,NULL,NULL);

    if (FAILED(hr))
    {
     return TRUE;
    } 

原创粉丝点击