Aracılığıyla paylaş


SQLGetData

SQLGetData sonuç almak için kullanılan küme sütun değerlerini bağlama olmayan veri.SQLGetData olan bir sütundan çok miktarda veri almak için aynı sütun üzerinde sırayla çağrılabilirText, ntext, or Image veri türü.

Bir uygulama, sonuç olarak getirmesi değişkenleri Bağla gereksinim yok küme veri.Herhangi sütun veri alınacağı SQL Server Kullanarak, yerel istemci ODBC sürücüsü SQLGetData.

The SQL Server Native istemci ODBC driver does not support using SQLGetData to retrieve data in random sütun order.Ile işlenen tüm ilişkisiz sütun SQLGetData ilişkili sütundan daha yüksek sütun sıra sayılarını sonucu olan küme.Uygulama, en düşük sıra ilişkisiz sütun değeri için en yüksek veri işleme gerekir.Bir alt veri ordinally almaya çalışırken bir hata sütun sonuçlar numaralı.Uygulama sunucusu imleçler için rapor sonuç kullanarak küme satırları, uygulama geçerli satırın refetch ve sonra bir sütun değeri getirmek.Varsayılan salt okunur, yalnızca ilerleyen imleç bir deyim gerçekleştirildiğinde, yedeklenecek deyim yeniden yürütmek gerekir SQLGetData.

The SQL Server Native istemci ODBC driver accurately reports the length of text, ntext, and image data retrieved using SQLGetData.Uygulama iyi kullanımını yapabilirsiniz StrLen_or_IndPtr parametresi geri hızla uzun veri alınamıyor.

Not

Büyük bir değer türleri için StrLen_or_IndPtr , veri kesilmesi durumunda SQL_NO_TOTAL döndürecektir.

Gelişmiş tarih ve saat özellikleri için SQLGetData desteği

Tarih/saat türü sonuç sütun değerlerini açıklandığı biçimde dönüştürülür... C SQL arasında dönüştürme.

Daha fazla bilgi için bkz: Geliştirmeler'nı (ODBC) tarih/saat.

Büyük bir CLR UDTs SQLGetData desteği

SQLGetData 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.
        }
    }

See Also

Concepts

Other Resources