Modified:
trunk/examples/CPP/7/ADO/main.cpp
Log:
Modified: trunk/examples/CPP/7/ADO/main.cpp
===================================================================
--- trunk/examples/CPP/7/ADO/main.cpp 2006-07-18 22:42:12 UTC (rev 449)
+++ trunk/examples/CPP/7/ADO/main.cpp 2006-07-19 04:22:35 UTC (rev 450)
@@ -1,3 +1,7 @@
+#include <oledb.h>
+#include <msdadc.h>
+#include <msdaguid.h>
+
#include <ole2.h>
#include <stdio.h>
#include <conio.h>
@@ -19,7 +23,7 @@
rename( "EOF", "EndOfFile")
inline void TESTHR( HRESULT x ) { if FAILED(x) _com_issue_error(x); };
-
+IDataConvert *pDataConvert = NULL;
_ConnectionPtr pConnection = NULL;
char *pszConnectionString = "NorthwindMySQL";
char *pszUserID = "myodbctest";
@@ -71,6 +75,8 @@
/* rows */
while ( !(pRecordset->EndOfFile) )
{
+ wprintf( pRecordset->GetString( adClipString, 1, "|", "\n", "<NULL>" )
);
+/*
for ( long nField = 0; nField < pRecordset->Fields->Count; nField++ )
{
if ( !nField )
@@ -78,9 +84,13 @@
switch ( pRecordset->Fields->Item[nField]->Value.vt )
{
case VT_EMPTY:
+ printf( "%s |", "" );
+ break;
case VT_NULL:
+ printf( "%s |", "<NULL>" );
+ break;
case VT_I2:
- printf( "! %d |", pRecordset->Fields->Item[nField]->Value.vt
);
+ printf( "%d |", pRecordset->Fields->Item[nField]->Value.iVal
);
break;
case VT_I4:
printf( "%ld |",
pRecordset->Fields->Item[nField]->Value.lVal );
@@ -94,12 +104,39 @@
printf( "%f |", pRecordset->Fields->Item[nField]->Value.date
);
break;
case VT_BSTR:
+ printf( "%s |",
(LPCSTR)pRecordset->Fields->Item[nField]->Value.bstrVal );
+ break;
case VT_DISPATCH:
case VT_ERROR:
case VT_BOOL:
case VT_VARIANT:
case VT_UNKNOWN:
+ printf( "! %d |", pRecordset->Fields->Item[nField]->Value.vt
);
+ break;
case VT_DECIMAL:
+ {
+ char szValue[100];
+ DBLENGTH nDestLength = 0;
+ DBSTATUS pnStatusNotUsed;
+ BYTE bPrecisionNotUsed;
+ BYTE bScaleNotUsed;
+ HRESULT hResult = pDataConvert->DataConvert(
DBTYPE_DECIMAL, DBTYPE_STR, sizeof(DECIMAL), nDestLength,
pRecordset->Fields->Item[nField]->Value.decVal, szValue, sizeof(szValue) );
+ DBSTATUS_S_OK,
+
&pnStatusNotUsed,
+
bPrecisionNotUsed,
+ bScaleNotUsed,
+
DBDATACONVERT_DEFAULT );
+ pIcvt->DataConvert(DBTYPE_NUMERIC,DBTYPE_I4, // src, dest
types
+ (ULONG) sizeof(struct tagDB_NUMERIC), &cbDstLength,
+ (void *) &pMyData->indx,
+ &pMyData->indxInt,
+ (ULONG) sizeof (int),
+ DBSTATUS_S_OK,
&pdbsStatusNotUsed,bPrecisionNotUsed,bScaleNotUsed,
+ DBDATACONVERT_DEFAULT);
+
+ printf( "%s |", szValue );
+ }
+ break;
case VT_I1:
case VT_UI1:
case VT_UI2:
@@ -131,6 +168,7 @@
case VT_VERSIONED_STREAM:
printf( "! %d |", pRecordset->Fields->Item[nField]->Value.vt
);
break;
+*/
/*
case VT_BSTR_BLOB:
case VT_VECTOR:
@@ -141,13 +179,14 @@
case VT_ILLEGALMASKED:
case VT_TYPEMASK:
*/
+/*
default:
printf( "! %d |", pRecordset->Fields->Item[nField]->Value.vt
);
break;
}
}
printf( "\n" );
-
+*/
pRecordset->MoveNext();
}
@@ -182,7 +221,7 @@
try
{
TESTHR( pCommand.CreateInstance( __uuidof( Command ) ) );
- pCommand->CommandText = "SELECT EmployeeID, OrderID, OrderDate FROM orders
WHERE EmployeeID = ? ORDER BY OrderDate";
+ pCommand->CommandText = "SELECT * FROM orders WHERE EmployeeID = ? ORDER BY
OrderDate";
pCommand->CommandType = adCmdText;
variantEmployeeID.vt = VT_I2;
@@ -236,6 +275,8 @@
if ( FAILED( ::CoInitialize( NULL ) ) )
return;
+ TESTHR( CoCreateInstance( CLSID_OLEDB_CONVERSIONLIBRARY, NULL, CLSCTX_INPROC_SERVER,
IID_IDataConvert, (void **)&pDataConvert) );
+
/* do it */
if ( doConnect() )
{
| Thread |
|---|
| • Connector/ODBC 5 commit: r450 - trunk/examples/CPP/7/ADO | pharvey | 19 Jul |