Re: Database in CE 3.0 ...
From: Miky (mvaccaro_at_viasatonline.it)
Date: 02/02/05
- Next message: Michael J. Salamone [eMVP]: "Re: Aygshell Function.... SHINITDIALOG"
- Previous message: Miky: "Aygshell Function.... SHINITDIALOG"
- In reply to: Jean Nicolas Turcotte: "Database in CE 3.0 ..."
- Next in thread: Jean Nicolas Turcotte: "Re: Database in CE 3.0 ..."
- Reply: Jean Nicolas Turcotte: "Re: Database in CE 3.0 ..."
- Messages sorted by: [ date ] [ thread ]
Date: Wed, 2 Feb 2005 12:22:13 +0100
To use the ADOCE in wince 3.0 not is easy.
You need the adoce.h that it is created with ADOCE.IDL that you find in
ADOCE 3.1 SDK package.
While this is a sample code for connect to database and manipulation data.
File.H
****************************************************************************
#include <objsafe.h>
namespace MSADOCE
{
#include "adoce31.h"
}
#include <ocidl.h>
#include <Objbase.h>
#include <wceatl.h>
// ADO
CLSID tClsid;
HRESULT hr;
VARIANT varConnected;
MSADOCE::IADOCEConnection *iADOCEConn; //Connection Object
MSADOCE::IADOCERecordset *iADOCERS; //Recordset Object
MSADOCE::IADOCEFields *iADOCEFields; //Fields Object
MSADOCE::IADOCEField *iADOCEField; //Fields Object
File.CPP
****************************************************************************
// Init ADOCE
IID IID__Connection =
{0x113033DE,0xF682,0x11D2,{0xBB,0x62,0x00,0xC0,0x4F,0x68,0x0A,0xCC}};
IID IID__Recordset =
{0x113033F6,0xF682,0x11D2,{0xBB,0x62,0x00,0xC0,0x4F,0x68,0x0A,0xCC}};
TCHAR tsADOCE31ConnProgID[]= TEXT("ADOCE.Connection.3.1");
TCHAR tsADOCE31RSProgID[] = TEXT("ADOCE.Recordset.3.1" );
hr = CoInitializeEx(NULL,COINIT_MULTITHREADED);
if (FAILED(hr))
{
#ifdef _DBG
AfxMessageBox(_T("Errore CoInitializeEx")); // Error handling
#endif
}
hr = CLSIDFromProgID( tsADOCE31ConnProgID, &tClsid );
if (FAILED(hr))
{
#ifdef _DBG
AfxMessageBox(_T("Errore CLSIDFromProgID")); // Error handling
#endif
}
hr = CoCreateInstance (tClsid,
NULL,
CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER,
IID__Connection,
(LPVOID *)&iADOCEConn);
if (FAILED(hr))
{
#ifdef _DBG
AfxMessageBox(_T("Errore CoCreateInstance")); // Error handling
#endif
}
if(iADOCEConn && !FAILED(hr))
{
hr=iADOCEConn->put_Provider(TEXT("cedb"));
hr =
iADOCEConn->Open(TEXT("DB.cdb"),TEXT(""),TEXT(""),MSADOCE::adOpenUnspecified
);
if (FAILED(hr))
{
#ifdef _DBG
AfxMessageBox(_T("Errore iADOCEConn->Open")); // Error handling
#endif
}
hr=CLSIDFromProgID( tsADOCE31RSProgID, &tClsid );
hr = CoCreateInstance (tClsid,
NULL,
CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER,
IID__Recordset,
(LPVOID *)&iADOCERS);
varConnected.pdispVal=iADOCEConn;
varConnected.vt=VT_DISPATCH;
hr=iADOCERS->put_ActiveConnection(varConnected);
if (FAILED(hr))
{
#ifdef _DBG
AfxMessageBox(_T("Errore put_ActiveConnection")); // Error handling
#endif
}
}
else
{
#ifdef _DBG
AfxMessageBox(_T("Connect Error"));
#endif
}
//Manipulation
VARIANT varTSQL;
VARIANT valueNome;
VARIANT valueTel;
VARIANT valueMail;
VARIANT valueStato;
VARIANT index_fieldNome;
VARIANT index_fieldTel;
VARIANT index_fieldMail;
VARIANT index_fieldStato;
int i_namePosition = 0;
VariantInit(&valueNome );
VariantInit(&valueTel );
VariantInit(&valueMail );
VariantInit(&valueStato);
VariantInit(&index_fieldNome );
VariantInit(&index_fieldTel );
VariantInit(&index_fieldMail );
VariantInit(&index_fieldStato);
index_fieldNome.vt = VT_I4;
index_fieldTel.vt = VT_I4;
index_fieldMail.vt = VT_I4;
index_fieldStato.vt = VT_I4;
index_fieldNome.lVal = 1;
index_fieldTel.lVal = 2;
index_fieldMail.lVal = 3;
index_fieldStato.lVal = 4;
// Compone SQL
strSQL.Format( _T( "SELECT * FROM rubrica WHERE nome = '%s'" ), strNome )
;
varTSQL.vt=VT_BSTR;
varTSQL.bstrVal=SysAllocString( strSQL.AllocSysString() );
hr=iADOCERS->Open(varTSQL,
varConnected,
MSADOCE::adOpenDynamic,
MSADOCE::adLockOptimistic,
MSADOCE::adCmdUnknown);
if (FAILED(hr))
{
#ifdef _DBG
AfxMessageBox(_T( "Error iADOCERS->Open (SELECT)" )); // Error handling
#endif
}
valueNome.vt = VT_BSTR;
valueTel.vt = VT_BSTR;
valueMail.vt = VT_BSTR;
valueStato.vt = VT_I4;
valueStato.lVal = 0;
// Inserimento Nome
valueNome.bstrVal=SysAllocString( _T( "" ) );
iADOCERS->Update(index_fieldNome, valueNome);
// Inserimento Telefono
valueTel.bstrVal=SysAllocString( _T( "" ) );
iADOCERS->Update(index_fieldTel, valueTel);
// Inserimento Mail
valueMail.bstrVal=SysAllocString( _T( "" ) );
iADOCERS->Update(index_fieldMail, valueMail);
// Setting stato = 0
iADOCERS->Update(index_fieldStato, valueStato);
// Chiusura Recordset
iADOCERS->Close();
// Libero memoria allocata
SysFreeString (varTSQL.bstrVal );
SysFreeString (valueNome.bstrVal);
SysFreeString (valueTel.bstrVal );
SysFreeString (valueMail.bstrVal);
Miky
- Next message: Michael J. Salamone [eMVP]: "Re: Aygshell Function.... SHINITDIALOG"
- Previous message: Miky: "Aygshell Function.... SHINITDIALOG"
- In reply to: Jean Nicolas Turcotte: "Database in CE 3.0 ..."
- Next in thread: Jean Nicolas Turcotte: "Re: Database in CE 3.0 ..."
- Reply: Jean Nicolas Turcotte: "Re: Database in CE 3.0 ..."
- Messages sorted by: [ date ] [ thread ]
Relevant Pages
|