Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Azure Synapse Analytics
Analytics Platform System (PDW)
SQLGetData , sütun değerlerini bağlamadan sonuç kümesi verilerini almak için kullanılır. SQLGetData , aynı sütunda ardışık olarak çağrılarak metin, ntext veya görüntü veri tipine sahip bir sütundan büyük miktarda veri alınabilir.
Bir uygulamanın sonuç kümesi verisini almak için değişkenleri bağlaması gerekmez. Herhangi bir sütunun verisi, SQLGetData kullanılarak SQL Server Native Client ODBC sürücüsünden alınabilir.
SQL Server Native Client ODBC sürücüsü, verileri rastgele sütun sırasına göre almak için SQLGetData'yı desteklemez. SQLGetData ile işlenen tüm bağlanmamış sütunlar, sonuç kümesindeki sınırlı sütunlardan daha yüksek sütun ordinallerine sahip olmalıdır. Uygulama, en düşük bağlanmamış sıralı sütun değerinden en yüksek değere kadar veriyi işlemek zorundadır. Daha düşük sıralı numaralı bir sütundan veri almaya çalışmak hata ile sonuçlanır. Uygulama sonuç kümesi satırlarını raporlamak için sunucu imlecini kullanıyorsa, mevcut satırı yeniden etleyebilir ve ardından bir sütunun değerini getirebilir. Varsayılan okunabilir, ilere imleç üzerinde bir ifade çalıştırılırsa, SQLGetData'yı yedeklemek için ifadeyi yeniden çalıştırmanız gerekir.
SQL Server Native Client ODBC sürücüsü, SQLGetData kullanılarak alınan metin, ntext ve görüntü verilerinin uzunluğunu doğru şekilde bildirir. Uygulama, uzun verileri hızlıca almak için StrLen_or_IndPtr parametre dönüşünü iyi kullanabilir.
Note
Büyük değer türleri için, veri kesintisi durumunda StrLen_or_IndPtr SQL_NO_TOTAL döndürecektir.
Gelişmiş Tarih ve Saat Özellikleri için SQLGetData Desteği
Tarih/saat türlerinin sonuç sütunu değerleri, SQL'den C'ye dönüşümler bölümünde tanımlandığı şekilde dönüştürülür.
Daha fazla bilgi için bkz. Tarih ve Saat Geliştirmeleri (ODBC).
Büyük CLR UDT'ler için SQLGetData desteği
SQLGetData büyük CLR kullanıcı tanımlı türleri (UDT) destekler. Daha fazla bilgi için bkz. Büyük CLR User-Defined Türleri (ODBC).
Example
SQLHDBC hDbc = NULL;
SQLHSTMT hStmt = NULL;
long lEmpID;
PBYTE pPicture;
SQLINTEGER pIndicators[2];
// Get an environment, connection, and so on.
...
// Get a statement handle and execute a command.
SQLAllocHandle(SQL_HANDLE_STMT, hDbc, &hStmt);
if (SQLExecDirect(hStmt,
(SQLCHAR*) "SELECT EmployeeID, Photo FROM Employees",
SQL_NTS) == SQL_ERROR)
{
// Handle error and return.
}
// Retrieve data from row set.
SQLBindCol(hStmt, 1, SQL_C_LONG, (SQLPOINTER) &lEmpID, sizeof(long),
&pIndicators[0]);
while (SQLFetch(hStmt) == SQL_SUCCESS)
{
cout << "EmployeeID: " << lEmpID << "\n";
// Call SQLGetData to determine the amount of data that's waiting.
if (SQLGetData(hStmt, 2, SQL_C_BINARY, pPicture, 0, &pIndicators[1])
== SQL_SUCCESS_WITH_INFO)
{
cout << "Photo size: " pIndicators[1] << "\n\n";
// Get all the data at once.
pPicture = new BYTE[pIndicators[1]];
if (SQLGetData(hStmt, 2, SQL_C_DEFAULT, pPicture,
pIndicators[1], &pIndicators[1]) != SQL_SUCCESS)
{
// Handle error and continue.
}
delete [] pPicture;
}
else
{
// Handle error on attempt to get data length.
}
}