Getirmek için SQLGetData SQLGetData
U sütun değerlerini bağlama olmadan sonuç küme verileri almak için kullanılır.U büyük miktarda veri bir sütun almak için aynı sütunu sırayla çağrılabilir bir metin, ntext, veya Görüntü veri türü.
Uygulama değişkenleri sonuç küme verileri getirmek için bağlama bir gereksinim mevcut değildir.Herhangi bir veri sütun den alınan SQL Server yerel istemci odbc sürücüsü kullanarak u.
The SQL Server Native Client ODBC driver does not support using SQLGetData to retrieve data in random column order.Tüm ilişkisiz sütunlar ile işlenen u sonuç küme yüksek sütun Sıra sayılarını ilişkili sütundan olmalıdır.Uygulama verileri en düşük sıra ilişkisiz sütun değerinden yüksek işlemeniz gerekiyor.Alt bölmeden ordinally veri almaya çalışırken bir hata sütun sonuçlar numaralandırılmış.Sunucu imleçler rapor için uygulama kullanıyorsa sonuç küme satır, uygulama geçerli satırın yeniden getirmesi ve sonra bir sütun değeri getirmek.Bir deyim varsayılan salt okunur, yalnızca ilerleyen imleç yürütülür, Beyannameyi yeniden yürütmek gerekir yedeklemek u.
The SQL Server Native Client ODBC driver accurately reports the length of text, ntext, and image data retrieved using SQLGetData.Uygulama iyi kullanılmasını sağlamak StrLen_or_IndPtr parametre dönüş hızla uzun veri almak için.
Not
Büyük bir değer türleri için StrLen_or_IndPtr sql_no_total veri kesilmesi durumlarda geri döner.
Gelişmiş tarih ve saat özellikleri için destek u
Tarih/saat türleri sonuç sütun değerlerini açıklandığı şekilde dönüştürülür SQL gelen dönüştürmeleri c.
Daha fazla bilgi için bkz: Tarih/saat (odbc) geliştirmeleri.
Büyük clr UDTs için u desteği
U büyük clr kullanıcı tanımlı türler (UDTs) destekler.Daha fazla bilgi için bkz: Büyük clr kullanıcı tanımlı türler (odbc).
Örnek
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.
}
}