共用方式為


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 CLongBinaryCString 2
BIT BOOL
TINYINT BYTE
BIGINT CString 1
二元的 CByteArray
VARBINARY CByteArray
LONGVARBINARY CLongBinaryCByteArray 3
DATE CTime, CString
TIME CTime, CString
TIMESTAMP CTime, CString
  1. ANSI DECIMALNUMERIC 會對應至 , CString 因為 SQL_C_CHAR 是預設的 ODBC 傳輸類型。

  2. 對應至 CString時,預設會截斷超過 255 個字元的字元數據。 您可以藉由明確設定 RFX_TextnMaxLength 自變數來擴充截斷長度。

  3. 對應至 CByteArray時,預設會截斷超過 255 個字元的二進位數據。 您可以藉由明確設定 RFX_BinarynMaxLength 自變數來擴充截斷長度。

如果您未使用 ODBC 數據指標連結庫,則嘗試使用 Microsoft SQL Server ODBC 驅動程式和 MFC ODBC 資料庫類別來更新兩個或多個長可變長度字段時,可能會遇到問題。 ODBC 類型, SQL_LONGVARCHARSQL_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 數據指標連結庫。

另請參閱

SQL
SQL:製作直接的 SQL 呼叫 (ODBC)