2025-04-27 07:49:33 -04:00

84 lines
2.0 KiB
C++

// CreateTable.cpp : Implementation of CCreateTable
#include "stdafx.h"
#include "BankVC.h"
#include "CreateTable.h"
CComBSTR CONNECTION ("FILEDSN=IISSAMPLE");
char szSQL[] = "If not exists (Select name from sysobjects where name = 'Account' )\n" \
"BEGIN \n" \
"CREATE TABLE dbo.Account( \n" \
"AccountNo int NOT NULL,\n"\
"Balance int NULL,\n" \
"CONSTRAINT PK__1_10 PRIMARY KEY CLUSTERED (AccountNo)\n)\n" \
"Insert into Account Values (1, 1000) \n" \
"Insert into Account Values (2, 1000) \n" \
"END";
/////////////////////////////////////////////////////////////////////////////
// CCreateTable
STDMETHODIMP CCreateTable::InterfaceSupportsErrorInfo(REFIID riid)
{
static const IID* arr[] =
{
&IID_ICreateTable
};
for (int i=0; i < sizeof(arr) / sizeof(arr[0]); i++)
{
if (InlineIsEqualGUID(*arr[i],riid))
return S_OK;
}
return S_FALSE;
}
STDMETHODIMP CCreateTable::CreateAccount()
{
// Get the ObjectContext object
HRESULT hr;
TCHAR strErr[512];
_ConnectionPtr pConnection;
_RecordsetPtr pRecordset = NULL;
CComPtr<IObjectContext> pObjectContext=NULL;
hr = GetObjectContext(&pObjectContext);
if(FAILED(hr))
{
wsprintf(strErr,"GetObjectContext Failed!");
goto ErrorHandler;
}
// Create ADODB.Connection object and execute SQL statement to create Table
//
hr = pConnection.CreateInstance("ADODB.Connection.1");
if(FAILED(hr))
{
wsprintf(strErr,"Create ADODB.Connection object failed!");
goto ErrorHandler;
}
hr = pConnection->Open(CONNECTION, NULL, NULL );
if(FAILED(hr))
{
wsprintf(strErr,"Open ODBC connection failed!");
goto ErrorHandler;
}
hr = pConnection->Execute( CComBSTR(szSQL), static_cast<VARIANT*> (&vtMissing), adCmdText, &pRecordset);
if(FAILED(hr))
{
wsprintf(strErr,"Create table failed ");
goto ErrorHandler;
}
pObjectContext->SetComplete();
return S_OK;
ErrorHandler:
Error(strErr,IID_ICreateTable );
if (pObjectContext) pObjectContext->SetAbort();
return hr;
}