List:Commits« Previous MessageNext Message »
From:pharvey Date:July 20 2006 6:08am
Subject:Connector/ODBC 5 commit: r453 - trunk/examples/CPP/7/ADO
View as plain text  
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/ADOpharvey20 Jul