Share via


SQLGetData

SQLGetData sütun değerlerini bağlama olmadan sonuç kümesi veri almak için kullanılır. SQLGetData gittikçe büyük miktarda veri içeren bir sütun almak için aynı sütun çağrılabilir bir metin, ntext, veya Resim veri türü.

Almak için bir uygulama bağlama değişkenleri kümesi veri neden gereksinim yoktur. Herhangi bir sütunun veri alınabilir SQL Serverkullanarak yerel istemci odbc sürücüsü SQLGetData.

SQL ServerYerel istemci odbc sürücüsü kullanarak desteklemez SQLGetData rasgele sütun sırası verileri almak için. Birlikte tüm ilişkisiz sütunlar işleme SQLGetData sonuç kümesinde yüksek sütun sıra sayılarını ilişkili sütundan olmalıdır. Uygulama verileri ilişkisiz sütun sıralı en düşük değerden en yüksek işlem gerekir. Ordinally bir alt veri alma girişiminde sütunu hata numaralandırılmış. Uygulama, sonuç satır kümesi rapor sunucu imleçler kullanıyorsa, uygulama geçerli satır refetch ve sonra bir sütun değeri döndürür. Varsayılan salt okunur, salt ileri imleç bir deyimi yürütüldüğünde, yedeklemek için deyimi yeniden yürütmek gerekir SQLGetData.

SQL ServerYerel istemci odbc sürücüsü doğru uzunluğu raporları metin, ntext, ve Resim kullanarak veri SQLGetData. Uygulama en iyi şekilde yapabilirsiniz Sql_data_at_execstrlen_or_ındptr parametre dönüş hızla uzun veri almak için.

[!NOT]

Büyük bir değer türleri için Sql_data_at_execstrlen_or_ındptr sql_no_total veri kesilmesi durumlarda dönecektir.

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

Açıklanan sonuç sütun değerlerini Tarih/saat türleri 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 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.
        }
    }

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

Ayrıca bkz.

Kavramlar

odbc API uygulama ayrıntıları

Diğer Kaynaklar

SQLGetData işlev