Aracılığıyla paylaş


SQL: SQL ve C++ Veri Türleri (ODBC)

Not

Bu bilgiler MFC ODBC sınıfları için geçerlidir. MFC DAO sınıfları ile çalışıyorsanız DAO Yardımı'ndaki "Microsoft Jet Veritabanı Altyapısı SQL ve ANSI SQL Karşılaştırması" konusuna bakın.

Aşağıdaki tabloda ANSI SQL veri türleri C++ veri türleriyle eşlenmiştir. Bu, ODBC Programcı Başvurusu belgelerinin Ek D'de verilen C dil bilgilerini genişletmektedir. Sihirbazlar çoğu veri türü eşlemesini sizin için yönetir. Sihirbaz kullanmıyorsanız, alan değişim kodunu el ile yazmanıza yardımcı olması için eşleme bilgilerini kullanabilirsiniz.

C++ Veri Türlerine Eşlenen ANSI SQL Veri Türleri

ANSI SQL veri türü C++ veri türü
CHAR CString
ONDALIK CString 1
SMALLINT int
GERÇEK float
TAM SAYI long
FLOAT double
ÇİFT double
SAYISAL CString 1
VARCHAR CString
LONGVARCHAR CLongBinary, CString 2
BİT bool
TINYINT BAYT
BIGINT CString 1
İKİLİ CByteArray
VARBINARY CByteArray
LONGVARBINARY CLongBinary, CByteArray 3
TARİH CTime, CString
SAAT CTime, CString
ZAMAN DAMGASI CTime, CString
  1. ANSI DECIMAL ve NUMERICCString'ya eşleniyor çünkü varsayılan ODBC aktarım türü SQL_C_CHAR'dır.

  2. 255 karakteri aşan karakter verileri, varsayılan olarak CString ile eşleştirildiğinde kesilir. kesme uzunluğunu, nMaxLength bağımsız değişkenini RFX_Text açıkça ayarlayarak genişletebilirsiniz.

  3. 255 karakteri aşan ikili veriler, eşlendiğinde CByteArray varsayılan olarak kesilir. Kesme uzunluğunu, nMaxLength bağımsız değişkenini RFX_Binary açıkça ayarlayarak genişletebilirsiniz.

ODBC imleç kitaplığını kullanmıyorsanız, Microsoft SQL Server ODBC sürücüsünü ve MFC ODBC veritabanı sınıflarını kullanarak iki veya daha fazla uzun değişken uzunluklu alanı güncelleştirmeye çalışırken bir sorunla karşılaşabilirsiniz. SQL_LONGVARCHAR ve SQL_LONGVARBINARY ODBC türleri, metin ve görüntü SQL Server türleriyle eşler. Aynı CRecordset::Update çağrısında iki veya daha fazla uzun değişken uzunluklu alanı güncelleştirirseniz bir CDBException atılır. Bu nedenle, ile CRecordset::Updateaynı anda birden çok uzun sütunu güncelleştirmayın. ODBC API'siyle SQLPutDataaynı anda birden çok uzun sütunu güncelleştirebilirsiniz. ODBC imleç kitaplığını da kullanabilirsiniz, ancak bu, imleçleri destekleyen ve imleç kitaplığına ihtiyaç duymayan SQL Server sürücüsü gibi sürücüler için önerilmez.

ODBC imleç kitaplığını MFC ODBC veritabanı sınıflarıyla ve Microsoft SQL Server ODBC sürücüsüyle kullanıyorsanız, CRecordset::Requery için bir çağrıyı takip eden bir CRecordset::Update çağrısı olduğunda bir ASSERT ve bir CDBException oluşabilir. Bunun yerine CRecordset::Requery yerine CRecordset::Close ve CRecordset::Open çağrılmalıdır. SQL Server ve SQL Server ODBC sürücüsü imleçler için yerel olarak yerel destek sağladığından ve ODBC imleç kitaplığı gerekli olmadığından, başka bir çözüm ODBC imleç kitaplığını kullanmamaktır.

Ayrıca bkz.

SQL
SQL: Doğrudan SQL Çağrıları Yapma (ODBC)