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