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-19 06:17:46 UTC (rev 452)
+++ trunk/examples/CPP/7/ADO/main.cpp 2006-07-20 04:08:30 UTC (rev 453)
@@ -26,8 +26,8 @@
IDataConvert *pDataConvert = NULL;
_ConnectionPtr pConnection = NULL;
char *pszConnectionString = "NorthwindMySQL";
-char *pszUserID = "myodbctest";
-char *pszPassword = "myodbctest";
+char *pszUserID = "root";
+char *pszPassword = "mysql";
void doPrintProviderError( _ConnectionPtr pConnection )
{
@@ -56,7 +56,7 @@
// Print Com errors.
printf("Error\n");
printf("\tCode = %08lx\n", e.Error());
- printf("\tCode meaning = %s\n", e.ErrorMessage());
+ wprintf( L"\tCode meaning = %s\n", e.ErrorMessage());
printf("\tSource = %s\n", (LPCSTR) bstrSource);
printf("\tDescription = %s\n", (LPCSTR) bstrDescription);
}
@@ -73,121 +73,10 @@
printf( "\n" );
/* rows */
- while ( !(pRecordset->EndOfFile) )
+ while ( !pRecordset->EndOfFile )
{
wprintf( pRecordset->GetString( adClipString, 1, "|", "\n", "<NULL>" )
);
-/*
- for ( long nField = 0; nField < pRecordset->Fields->Count; nField++ )
- {
- if ( !nField )
- printf( "|" );
- 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.iVal
);
- break;
- case VT_I4:
- printf( "%ld |",
pRecordset->Fields->Item[nField]->Value.lVal );
- break;
- case VT_R4:
- case VT_R8:
- case VT_CY:
- printf( "! %d |", pRecordset->Fields->Item[nField]->Value.vt
);
- break;
- case VT_DATE:
- 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:
- case VT_UI4:
- case VT_I8:
- case VT_UI8:
- case VT_INT:
- case VT_UINT:
- case VT_VOID:
- case VT_HRESULT:
- case VT_PTR:
- case VT_SAFEARRAY:
- case VT_CARRAY:
- case VT_USERDEFINED:
- case VT_LPSTR:
- case VT_LPWSTR:
- case VT_RECORD:
- case VT_INT_PTR:
- case VT_UINT_PTR:
- case VT_FILETIME:
- case VT_BLOB:
- case VT_STREAM:
- case VT_STORAGE:
- case VT_STREAMED_OBJECT:
- case VT_STORED_OBJECT:
- case VT_BLOB_OBJECT:
- case VT_CF:
- case VT_CLSID:
- case VT_VERSIONED_STREAM:
- printf( "! %d |", pRecordset->Fields->Item[nField]->Value.vt
);
- break;
-*/
-/*
- case VT_BSTR_BLOB:
- case VT_VECTOR:
- case VT_ARRAY:
- case VT_BYREF:
- case VT_RESERVED:
- case VT_ILLEGAL:
- case VT_ILLEGALMASKED:
- case VT_TYPEMASK:
-*/
-/*
- default:
- printf( "! %d |", pRecordset->Fields->Item[nField]->Value.vt
);
- break;
- }
- }
- printf( "\n" );
-*/
- pRecordset->MoveNext();
+// pRecordset->MoveNext();
}
return true;
@@ -211,7 +100,7 @@
return true;
}
-bool doSelect()
+bool doSelectBoundParameterChar()
{
_CommandPtr pCommand = NULL;
_ParameterPtr pParameter = NULL;
@@ -221,26 +110,50 @@
try
{
TESTHR( pCommand.CreateInstance( __uuidof( Command ) ) );
- pCommand->CommandText = "SELECT * FROM orders WHERE CustomerID = '?'";
-// pCommand->CommandText = "SELECT * FROM orders WHERE EmployeeID = ? ORDER BY
OrderDate";
+ pCommand->ActiveConnection = pConnection;
+ pCommand->CommandText = "SELECT * FROM orders WHERE CustomerID = ? ORDER BY
OrderID";
pCommand->CommandType = adCmdText;
variant.vt = VT_BSTR;
variant.bstrVal = _bstr_t( "WELLI" );
- pParameter = pCommand->CreateParameter( "", adBSTR, adParamInput, 6, variant
);
+ pParameter = pCommand->CreateParameter( _bstr_t( "CustomerID" ), adChar,
adParamInput, 6, variant );
pCommand->Parameters->Append( pParameter );
- pParameter->Value = variant;
-/*
+ pRecordset = pCommand->Execute( NULL, NULL, adCmdText );
+
+ doPrintRecordset( pRecordset );
+ }
+ catch ( _com_error &e )
+ {
+ doPrintProviderError( pConnection );
+ doPrintComError( e );
+ return false;
+ }
+
+ return true;
+}
+
+bool doSelectBoundParameterInteger()
+{
+ _CommandPtr pCommand = NULL;
+ _ParameterPtr pParameter = NULL;
+ _RecordsetPtr pRecordset = NULL;
+ VARIANT variant;
+
+ try
+ {
+ TESTHR( pCommand.CreateInstance( __uuidof( Command ) ) );
+ pCommand->ActiveConnection = pConnection;
+ pCommand->CommandText = "SELECT * FROM orders WHERE EmployeeID = ? ORDER BY
OrderID";
+ pCommand->CommandType = adCmdText;
+
variant.vt = VT_I2;
variant.iVal = 4;
- pParameter = pCommand->CreateParameter( "", adInteger, adParamInput,
sizeof(int), variant );
+ pParameter = pCommand->CreateParameter( "EmployeeID", adInteger, adParamInput,
sizeof(int), variant );
pCommand->Parameters->Append( pParameter );
- pParameter->Value = variant;
-*/
- pCommand->ActiveConnection = pConnection;
+
pRecordset = pCommand->Execute( NULL, NULL, adCmdText );
doPrintRecordset( pRecordset );
@@ -256,6 +169,56 @@
return true;
}
+bool doInsertBoundParameterBinary()
+{
+ _CommandPtr pCommand = NULL;
+ _ParameterPtr pParameter = NULL;
+ VARIANT variant1;
+ VARIANT variant2;
+ VARIANT variant3;
+ VARIANT variant4;
+ const char * pBinary = "binary data here";
+
+ try
+ {
+ TESTHR( pCommand.CreateInstance( __uuidof( Command ) ) );
+ pCommand->ActiveConnection = pConnection;
+ pCommand->CommandText = "INSERT INTO categories VALUES( ?, ?, ?, ? )";
+ pCommand->CommandType = adCmdText;
+
+ variant1.vt = VT_I2;
+ variant1.iVal = 1867;
+ pParameter = pCommand->CreateParameter( "CategoryID", adInteger, adParamInput,
sizeof(int), variant1 );
+ pCommand->Parameters->Append( pParameter );
+
+ variant2.vt = VT_BSTR;
+ variant2.bstrVal = _bstr_t( "Eighteen sixty seven" );
+ pParameter = pCommand->CreateParameter( "CategoryName", adChar, adParamInput,
20, variant2 );
+ pCommand->Parameters->Append( pParameter );
+
+ variant3.vt = VT_BSTR;
+ variant3.bstrVal = _bstr_t( "a fine year" );
+ pParameter = pCommand->CreateParameter( "Description", adChar, adParamInput,
11, variant3 );
+ pCommand->Parameters->Append( pParameter );
+
+ variant4.vt = VT_BLOB;
+ variant4.pbVal = (BYTE*)pBinary;
+ pParameter = pCommand->CreateParameter( "Picture", adBinary, adParamInput, 17,
variant4 );
+ pCommand->Parameters->Append( pParameter );
+
+ pCommand->Execute( NULL, NULL, adCmdText );
+ }
+ catch ( _com_error &e )
+ {
+ doPrintProviderError( pConnection );
+ doPrintComError( e );
+ return false;
+ }
+
+
+ return true;
+}
+
bool doDisconnect()
{
try
@@ -289,7 +252,9 @@
/* do it */
if ( doConnect() )
{
- doSelect();
+// doSelectBoundParameterChar();
+// doSelectBoundParameterInteger();
+ doInsertBoundParameterBinary();
doDisconnect();
}
| Thread |
|---|
| • Connector/ODBC 5 commit: r453 - trunk/examples/CPP/7/ADO | pharvey | 20 Jul |