• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Prayer

            在一般中尋求卓越
            posts - 1256, comments - 190, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            編輯詞條SQLBindCol

            Posted on 2008-10-16 18:59 Prayer 閱讀(533) 評論(0)  編輯 收藏 引用 所屬分類: DB2CLI
            SQLBindCol
              函數功能描述:將數據緩沖綁定到結果集的列
              說明:
              版本引入:ODBC 1.0
              遵從標準:ISO 92
              功能說明: SQLBindCol將應用程序的數據緩沖綁定到結果集的各列
              函數原型: SQLRETURN SQLBindCol(
              SQLHSTMT StatementHandle,
              SQLUSMALLINT ColumnNumber,
              SQLSMALLINT TargetType,
              SQLPOINTER TargetValuePtr,
              SQLINTEGER BufferLength,
              SQLLEN * StrLen_or_Ind);
              參數:
              StatementHandle
              [輸入] 聲明的句柄
              ColumnNumber
              [輸入] 結果集里要綁定的列號。列號為從0開始遞增的數字編號,第0列為書簽列。如果沒有使用書簽――就是說,SQL_ATTR_USE_BOOKMARKS這個聲明屬性被置為SQL_UB_OFF――那么列號從1開始計數;
              TargetType
              [輸入] *TargetValuePtr所指緩沖的C數據類型的標識符,當通過SQLFetch, SQLFetchScroll, SQLBulkOperations或 SQLSetPos從數據源取得數據的時候,驅動程序將數據轉換成這個類型;當通過SQLBulkOperations或SQLSetPos發送數據到數據源時,驅動程序從這個類型來轉換數據。
              TargetValuePtr
              [輸入/輸出] 用來綁定列的數據緩沖的指針。SQLFetch 和SQLFetchScroll返回數據到這個緩沖。當操作為SQL_FETCH_BY_BOOKMARK標識的時候SQLBulkOperations返回數據到這個緩沖。當操作為SQL_ADD 或 SQL_UPDATE_BY_BOOKMARK時,從這個緩沖取得數據。當操作為SQL_REFRESH時,SQLSetPos返回數據到這個緩沖中;當操作為SQL_UPDATE時,從這個緩沖取得數據。如果TargetValuePtr為一空指針,驅動程序取消列到數據緩沖的綁定。應用程序可通過SQL_UNBIND選項通過調用SQLFreeStmt來取消所有列的綁定。如果SQLBindCol調用的TargetValuePtr參數為空指針而StrLen_or_IndPtr是有效的值的話,應用程序可取消列的綁定但仍然存在一個該列的長度/指示緩沖綁定。
              BufferLength
              [輸入] *TargetValuePtr指向的緩沖的字節數長度。驅動程序使用BufferLength來避免返回可變長數據如字符或二進制數時寫過*TargetValuePtr的邊界。注意驅動程序會在返回字符數據到*TargetValuePtr時計算空終止符。因此*TargetValuePtr緩沖就要包括空終止符的空間,否則驅動程序會截短數據。當驅動程序返回定長數據如整形數或一個數據結構時,驅動程序會忽略BufferLength參數并判斷緩沖是否足夠大來接收數據。因此很重要的是應用程序要分配一個足夠大的緩沖給定長數據,否則驅動程序會寫過緩沖的界。當BufferLength 小于0時SQLBindCol返回SQLSTATE HY090(無效的字符串或緩沖長度),等于0時不返回這個結果,可是,如果TargetType指定為一個字符類型,應用程序就不要將BufferLength設為0,因為ISO的CLI-適應的 驅動程序在這種情況下返回SQLSTATE HY090。
              StrLen_or_IndPtr
              [輸入/輸出] 指向綁定列的長度/指示緩沖。SQLFetch 和 SQLFetchScroll返回一個數值到這個緩沖。當操作為SQL_ADD,SQL_UPDATE_BY_BOOKMARK, 或 SQL_DELETE_BY_BOOKMARK時SQLBulkOperations從這個緩沖取得一個數值。當操作為SQL_FETCH_BY_BOOKMARK時SQLBulkOperations返回一個數值到這個緩沖,當操作為SQL_REFRESH時SQLSetPos返回一個數值到此緩沖;但操作為SQL_UPDATE時,它從這個緩沖取回一個數值。SQLFetch, SQLFetchScroll, SQLBulkOperations, 和 SQLSetPos可返回以下數值到長度/指示緩沖:
              l 返回數據的有效長度
              l SQL_NO_TOTAL
              l SQL_NULL_DATA
              應用程序可下列值放入長度/指示緩沖給供SQLBulkOperations 或SQLSetPos使用:
              l 待發送數據的長度
              l SQL_NTS
              l SQL_NULL_DATA
              l SQL_DATA_AT_EXEC
              l SQL_LEN_DATA_AT_EXEC宏的結果
              l SQL_COLUMN_IGNORE
              如果指示緩沖和長度緩沖是分開的緩沖區的話,指示緩沖只能返回SQL_NULL_DATA,而長度緩沖可返回所有其他的值。如果StrLen_or_IndPtr為一個空指針,那么沒有可用的長度或指示值。這是當取數據且數據為NULL時的一個錯誤。
              返回值:
              SQL_SUCCESS,SQL_SUCCESS_WITH_INFO,SQL_ERROR,或SQL_INVALID_HANDLE.
              備注:此SDK函數的使用涉及到很多相關的部分,請使用者一定要認真仔細。
              示例代碼:
              #define NAME_LEN 50
              #define PHONE_LEN 10
              SQLCHAR szName[NAME_LEN], szPhone[PHONE_LEN];
              SQLINTEGER sCustID, cbName, cbCustID, cbPhone;
              SQLHSTMT hstmt;
              SQLRETURN retcode;
              retcode = SQLExecDirect(hstmt,
              "SELECT CUSTID, NAME, PHONE FROM CUSTOMERS ORDER BY 2, 1, 3",
              SQL_NTS);
              if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
              {
              /* Bind columns 1, 2, and 3 */
              SQLBindCol(hstmt, 1, SQL_C_ULONG, &sCustID, 0, &cbCustID);
              SQLBindCol(hstmt, 2, SQL_C_CHAR, szName, NAME_LEN, &cbName);
              SQLBindCol(hstmt, 3, SQL_C_CHAR, szPhone, PHONE_LEN, &cbPhone);
              /* Fetch and print each row of data. On */
              /* an error, display a message and exit. */
              while (TRUE)
              {
              retcode = SQLFetch(hstmt);
              if (retcode == SQL_ERROR || retcode == SQL_SUCCESS_WITH_INFO)
              {
              show_error();
              }
              if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
              {
              fprintf(out, "%-*s %-5d %*s", NAME_LEN-1, szName,
              sCustID, PHONE_LEN-1, szPhone);
              }
              else
              {
              break;
              }
              }
              }
            婷婷久久五月天| 性做久久久久久免费观看| 久久精品国产亚洲av麻豆小说 | 人妻无码久久一区二区三区免费| 国产色综合久久无码有码| 97久久国产亚洲精品超碰热| 久久久无码精品亚洲日韩软件| 国内精品久久久久影院薰衣草 | 伊人久久无码中文字幕| 99久久人妻无码精品系列蜜桃| 久久久噜噜噜久久| 久久久久久久久无码精品亚洲日韩 | 99久久综合狠狠综合久久| 久久人人爽人人爽人人片av麻烦| 久久久久免费看成人影片| 久久综合伊人77777麻豆| 精品精品国产自在久久高清| 亚洲欧美国产日韩综合久久| 久久线看观看精品香蕉国产| 亚洲va国产va天堂va久久| 亚洲国产日韩综合久久精品| 国产精品99久久久久久宅男| 东京热TOKYO综合久久精品| 久久久噜噜噜久久中文字幕色伊伊| 国産精品久久久久久久| 久久九九亚洲精品| 国产精品久久久久久福利69堂| 无码国内精品久久综合88 | 久久亚洲AV无码精品色午夜麻豆| 一本色道久久88加勒比—综合| 久久亚洲精精品中文字幕| 一本久久a久久精品亚洲| 日韩人妻无码一区二区三区久久99| 国产一区二区精品久久岳| 久久精品一区二区影院| 成人午夜精品久久久久久久小说| 2021少妇久久久久久久久久| 国内精品久久人妻互换| 国内精品久久久久久野外| 99久久国产综合精品成人影院 | 99久久国产综合精品麻豆|