分享方式:


SQL:SQL 和 C++ 資料類型 (ODBC)

注意

此資訊適用於 MFC ODBC 類別。 如果您使用 MFC DAO 類別,請參閱 DAO 說明中的主題。

下表會將 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 DECIMAL NUMERIC 會對應至 , CString 因為 SQL_C_CHAR 是預設的 ODBC 傳輸類型。

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

  3. 對應至 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 則 ASSERT 可能會與 CDBException 一起發生。 請改為呼叫 CRecordset::Close 和 , CRecordset::Open 而不是 CRecordset::Requery 。 另一個解決方案不是使用 ODBC 資料指標程式庫,因為 SQL Server 和 SQL Server ODBC 驅動程式會原生支援資料指標,而且不需要 ODBC 資料指標程式庫。

另請參閱

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