SQL:SQL 和 C++ 資料類型 (ODBC)
注意
此資訊適用於 MFC ODBC 類別。 如果您使用的是 MFC DAO 類別,請參閱 DAO 說明中的「Microsoft 資料庫引擎 SQL 與 ANSI SQL 之比較」主題。
下表會將 ANSI SQL 資料類型對應至C++數據類型。 這會增強 ODBC 程式設計人員參考檔附錄 D 中提供的 C 語言資訊。 精靈會為您管理大部分的數據類型對應。 如果您不使用精靈,您可以使用對應資訊來協助您手動撰寫字段交換程序代碼。
對應至C++數據類型的ANSI SQL 資料類型
ANSI SQL 資料類型 | C++ 資料型別 |
---|---|
CHAR | CString |
DECIMAL | CString 1 |
SMALLINT | int |
REAL | float |
INTEGER | long |
FLOAT | double |
DOUBLE | double |
NUMERIC | CString 1 |
VARCHAR | CString |
LONGVARCHAR | CLongBinary 、 CString 2 |
BIT | BOOL |
TINYINT | BYTE |
BIGINT | CString 1 |
二元的 | CByteArray |
VARBINARY | CByteArray |
LONGVARBINARY | CLongBinary 、 CByteArray 3 |
DATE | CTime , CString |
TIME | CTime , CString |
TIMESTAMP | CTime , CString |
ANSI DECIMAL 和 NUMERIC 會對應至 ,
CString
因為 SQL_C_CHAR 是預設的 ODBC 傳輸類型。對應至
CString
時,預設會截斷超過 255 個字元的字元數據。 您可以藉由明確設定 的RFX_Text
nMaxLength 自變數來擴充截斷長度。對應至
CByteArray
時,預設會截斷超過 255 個字元的二進位數據。 您可以藉由明確設定 的RFX_Binary
nMaxLength 自變數來擴充截斷長度。
如果您未使用 ODBC 數據指標連結庫,則嘗試使用 Microsoft SQL Server ODBC 驅動程式和 MFC ODBC 資料庫類別來更新兩個或多個長可變長度字段時,可能會遇到問題。 ODBC 類型, SQL_LONGVARCHAR 和 SQL_LONGVARBINARY,對應至文字和影像 SQL Server 類型。 CDBException
如果您在對 的相同呼叫CRecordset::Update
上更新兩個或多個長可變長度字段,則會擲回 。 因此,請勿使用 CRecordset::Update
同時更新多個長數據行。 您可以使用 ODBC API SQLPutData
同時更新多個長資料行。 您也可以使用 ODBC 數據指標連結庫,但不建議針對支持數據指標且不需要數據指標連結庫的驅動程式,例如 SQL Server 驅動程式。
如果您使用 ODBC 數據指標連結庫搭配 MFC ODBC 資料庫類別和Microsoft SQL Server ODBC 驅動程式,則如果呼叫 CRecordset::Update
之後呼叫 CRecordset::Requery
,可能會發生 CDBException
ASSERT。 請改為呼叫 CRecordset::Close
和 , CRecordset::Open
而不是 CRecordset::Requery
。 另一個解決方案不是使用 ODBC 數據指標連結庫,因為 SQL Server 和 SQL Server ODBC 驅動程式會原生支援數據指標,而且不需要 ODBC 數據指標連結庫。