共用方式為


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++ 資料型別
字元 CString
十進制 CString 1
SMALLINT int
真正 float
整數 long
double
雙倍 double
數值 CString 1
VARCHAR CString
LONGVARCHAR CLongBinaryCString 2
位元 BOOL
TINYINT(小整數類型) 位元組
BIGINT CString 1
二元的 CByteArray
VARBINARY CByteArray
LONGVARBINARY CLongBinaryCByteArray 3
日期 CTimeCString
時間 CTimeCString
時間戳 CTimeCString
  1. ANSI DECIMALNUMERIC 會對應至 , CString 因為 SQL_C_CHAR 是預設的 ODBC 傳輸類型。

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

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

如果您未使用 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::Close 和 , CRecordset::Open 而不是 CRecordset::Requery。 另一個解決方案不是使用 ODBC 數據指標連結庫,因為 SQL Server 和 SQL Server ODBC 驅動程式會原生支援數據指標,而且不需要 ODBC 數據指標連結庫。

另請參閱

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