Nota
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare ad accedere o a cambiare directory.
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare a cambiare directory.
Nota
Queste informazioni sono valide per le classi ODBC MFC. Se si lavora con le classi DAO MFC, vedere l'argomento "Confronto tra Microsoft Jet motore di database SQL e SQL ANSI" nella Guida di DAO.
La tabella seguente esegue il mapping dei tipi di dati SQL ANSI ai tipi di dati C++. In questo modo vengono aumentate le informazioni sul linguaggio C fornite nell'Appendice D della documentazione di riferimento del programmatore ODBC. Le procedure guidate gestiscono la maggior parte del mapping dei tipi di dati. Se non si utilizza una procedura guidata, è possibile utilizzare le informazioni di mapping per scrivere manualmente il codice di scambio dei campi.
Tipi di dati SQL ANSI mappati ai tipi di dati C++
| Tipo di dati SQL ANSI | Tipo di dati C++ |
|---|---|
| CHAR | CString |
| DECIMALE |
CString 1 |
| SMALLINT | int |
| REALE | float |
| NUMERO INTERO | long |
| GALLEGGIARE | double |
| DOPPIO | double |
| NUMERICO |
CString 1 |
| VARCHAR | CString |
| LONGVARCHAR |
CLongBinary, CString 2 |
| PEZZO | BOOL |
| TINYINT | BYTE |
| BIGINT |
CString 1 |
| BINARIO | CByteArray |
| VARBINARY | CByteArray |
| LONGVARBINARY |
CLongBinary, CByteArray 3 |
| DATA |
CTime, CString |
| ORA |
CTime, CString |
| TIMESTAMP |
CTime, CString |
ANSI DECIMAL e NUMERIC vengono mappati a
CStringperché SQL_C_CHAR è il tipo di trasferimento ODBC predefinito.I dati di tipo carattere superiori a 255 caratteri vengono troncati per impostazione predefinita quando viene eseguito il mapping a
CString. È possibile estendere la lunghezza del troncamento impostando in modo esplicito l'argomento nMaxLength diRFX_Text.I dati binari superiori a 255 caratteri vengono troncati per impostazione predefinita quando viene eseguito il mapping a
CByteArray. È possibile estendere la lunghezza del troncamento impostando in modo esplicito l'argomento nMaxLength diRFX_Binary.
Se non si usa la libreria di cursori ODBC, è possibile che si verifichi un problema durante il tentativo di aggiornare due o più campi a lunghezza variabile lunghi utilizzando il driver ODBC di Microsoft SQL Server e le classi di database ODBC MFC. I tipi ODBC, SQL_LONGVARCHAR e SQL_LONGVARBINARY, eseguono il mapping ai tipi di testo e immagine di SQL Server. Viene CDBException generata un'eccezione se si aggiornano due o più campi a lunghezza variabile lunga nella stessa chiamata a CRecordset::Update. Pertanto, non aggiornare più colonne lunghe contemporaneamente con CRecordset::Update. È possibile aggiornare più colonne lunghe contemporaneamente con l'API SQLPutDataODBC . È anche possibile usare la libreria di cursori ODBC, ma questa opzione non è consigliata per i driver, ad esempio il driver di SQL Server, che supportano i cursori e non richiedono la libreria di cursori.
Se si usa la libreria di cursori ODBC con le classi di database ODBC MFC e il driver ODBC di Microsoft SQL Server, un'istruzione ASSERT può verificarsi insieme a un CDBException se una chiamata a CRecordset::Update segue una chiamata a CRecordset::Requery. Chiamare CRecordset::Close invece e CRecordset::Open anziché CRecordset::Requery. Un'altra soluzione non consiste nell'usare la libreria di cursori ODBC, perché SQL Server e il driver ODBC di SQL Server forniscono il supporto nativo per i cursori in modo nativo e la libreria di cursori ODBC non è necessaria.