• <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++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            編輯詞條SQLBindCol

            Posted on 2008-10-16 18:59 Prayer 閱讀(533) 評(píng)論(0)  編輯 收藏 引用 所屬分類: DB2CLI
            SQLBindCol
              函數(shù)功能描述:將數(shù)據(jù)緩沖綁定到結(jié)果集的列
              說(shuō)明:
              版本引入:ODBC 1.0
              遵從標(biāo)準(zhǔn):ISO 92
              功能說(shuō)明: SQLBindCol將應(yīng)用程序的數(shù)據(jù)緩沖綁定到結(jié)果集的各列
              函數(shù)原型: SQLRETURN SQLBindCol(
              SQLHSTMT StatementHandle,
              SQLUSMALLINT ColumnNumber,
              SQLSMALLINT TargetType,
              SQLPOINTER TargetValuePtr,
              SQLINTEGER BufferLength,
              SQLLEN * StrLen_or_Ind);
              參數(shù):
              StatementHandle
              [輸入] 聲明的句柄
              ColumnNumber
              [輸入] 結(jié)果集里要綁定的列號(hào)。列號(hào)為從0開(kāi)始遞增的數(shù)字編號(hào),第0列為書(shū)簽列。如果沒(méi)有使用書(shū)簽――就是說(shuō),SQL_ATTR_USE_BOOKMARKS這個(gè)聲明屬性被置為SQL_UB_OFF――那么列號(hào)從1開(kāi)始計(jì)數(shù);
              TargetType
              [輸入] *TargetValuePtr所指緩沖的C數(shù)據(jù)類型的標(biāo)識(shí)符,當(dāng)通過(guò)SQLFetch, SQLFetchScroll, SQLBulkOperations或 SQLSetPos從數(shù)據(jù)源取得數(shù)據(jù)的時(shí)候,驅(qū)動(dòng)程序?qū)?shù)據(jù)轉(zhuǎn)換成這個(gè)類型;當(dāng)通過(guò)SQLBulkOperations或SQLSetPos發(fā)送數(shù)據(jù)到數(shù)據(jù)源時(shí),驅(qū)動(dòng)程序從這個(gè)類型來(lái)轉(zhuǎn)換數(shù)據(jù)。
              TargetValuePtr
              [輸入/輸出] 用來(lái)綁定列的數(shù)據(jù)緩沖的指針。SQLFetch 和SQLFetchScroll返回?cái)?shù)據(jù)到這個(gè)緩沖。當(dāng)操作為SQL_FETCH_BY_BOOKMARK標(biāo)識(shí)的時(shí)候SQLBulkOperations返回?cái)?shù)據(jù)到這個(gè)緩沖。當(dāng)操作為SQL_ADD 或 SQL_UPDATE_BY_BOOKMARK時(shí),從這個(gè)緩沖取得數(shù)據(jù)。當(dāng)操作為SQL_REFRESH時(shí),SQLSetPos返回?cái)?shù)據(jù)到這個(gè)緩沖中;當(dāng)操作為SQL_UPDATE時(shí),從這個(gè)緩沖取得數(shù)據(jù)。如果TargetValuePtr為一空指針,驅(qū)動(dòng)程序取消列到數(shù)據(jù)緩沖的綁定。應(yīng)用程序可通過(guò)SQL_UNBIND選項(xiàng)通過(guò)調(diào)用SQLFreeStmt來(lái)取消所有列的綁定。如果SQLBindCol調(diào)用的TargetValuePtr參數(shù)為空指針而StrLen_or_IndPtr是有效的值的話,應(yīng)用程序可取消列的綁定但仍然存在一個(gè)該列的長(zhǎng)度/指示緩沖綁定。
              BufferLength
              [輸入] *TargetValuePtr指向的緩沖的字節(jié)數(shù)長(zhǎng)度。驅(qū)動(dòng)程序使用BufferLength來(lái)避免返回可變長(zhǎng)數(shù)據(jù)如字符或二進(jìn)制數(shù)時(shí)寫過(guò)*TargetValuePtr的邊界。注意驅(qū)動(dòng)程序會(huì)在返回字符數(shù)據(jù)到*TargetValuePtr時(shí)計(jì)算空終止符。因此*TargetValuePtr緩沖就要包括空終止符的空間,否則驅(qū)動(dòng)程序會(huì)截短數(shù)據(jù)。當(dāng)驅(qū)動(dòng)程序返回定長(zhǎng)數(shù)據(jù)如整形數(shù)或一個(gè)數(shù)據(jù)結(jié)構(gòu)時(shí),驅(qū)動(dòng)程序會(huì)忽略BufferLength參數(shù)并判斷緩沖是否足夠大來(lái)接收數(shù)據(jù)。因此很重要的是應(yīng)用程序要分配一個(gè)足夠大的緩沖給定長(zhǎng)數(shù)據(jù),否則驅(qū)動(dòng)程序會(huì)寫過(guò)緩沖的界。當(dāng)BufferLength 小于0時(shí)SQLBindCol返回SQLSTATE HY090(無(wú)效的字符串或緩沖長(zhǎng)度),等于0時(shí)不返回這個(gè)結(jié)果,可是,如果TargetType指定為一個(gè)字符類型,應(yīng)用程序就不要將BufferLength設(shè)為0,因?yàn)镮SO的CLI-適應(yīng)的 驅(qū)動(dòng)程序在這種情況下返回SQLSTATE HY090。
              StrLen_or_IndPtr
              [輸入/輸出] 指向綁定列的長(zhǎng)度/指示緩沖。SQLFetch 和 SQLFetchScroll返回一個(gè)數(shù)值到這個(gè)緩沖。當(dāng)操作為SQL_ADD,SQL_UPDATE_BY_BOOKMARK, 或 SQL_DELETE_BY_BOOKMARK時(shí)SQLBulkOperations從這個(gè)緩沖取得一個(gè)數(shù)值。當(dāng)操作為SQL_FETCH_BY_BOOKMARK時(shí)SQLBulkOperations返回一個(gè)數(shù)值到這個(gè)緩沖,當(dāng)操作為SQL_REFRESH時(shí)SQLSetPos返回一個(gè)數(shù)值到此緩沖;但操作為SQL_UPDATE時(shí),它從這個(gè)緩沖取回一個(gè)數(shù)值。SQLFetch, SQLFetchScroll, SQLBulkOperations, 和 SQLSetPos可返回以下數(shù)值到長(zhǎng)度/指示緩沖:
              l 返回?cái)?shù)據(jù)的有效長(zhǎng)度
              l SQL_NO_TOTAL
              l SQL_NULL_DATA
              應(yīng)用程序可下列值放入長(zhǎng)度/指示緩沖給供SQLBulkOperations 或SQLSetPos使用:
              l 待發(fā)送數(shù)據(jù)的長(zhǎng)度
              l SQL_NTS
              l SQL_NULL_DATA
              l SQL_DATA_AT_EXEC
              l SQL_LEN_DATA_AT_EXEC宏的結(jié)果
              l SQL_COLUMN_IGNORE
              如果指示緩沖和長(zhǎng)度緩沖是分開(kāi)的緩沖區(qū)的話,指示緩沖只能返回SQL_NULL_DATA,而長(zhǎng)度緩沖可返回所有其他的值。如果StrLen_or_IndPtr為一個(gè)空指針,那么沒(méi)有可用的長(zhǎng)度或指示值。這是當(dāng)取數(shù)據(jù)且數(shù)據(jù)為NULL時(shí)的一個(gè)錯(cuò)誤。
              返回值:
              SQL_SUCCESS,SQL_SUCCESS_WITH_INFO,SQL_ERROR,或SQL_INVALID_HANDLE.
              備注:此SDK函數(shù)的使用涉及到很多相關(guān)的部分,請(qǐng)使用者一定要認(rèn)真仔細(xì)。
              示例代碼:
              #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;
              }
              }
              }
            精品久久久久成人码免费动漫| 狠狠色丁香久久婷婷综| 久久国产乱子伦精品免费午夜| 一本久久久久久久| 开心久久婷婷综合中文字幕| 综合久久精品色| 国产高潮国产高潮久久久| 成人亚洲欧美久久久久| 久久这里有精品| 99久久精品午夜一区二区| 欧美精品丝袜久久久中文字幕 | 人妻精品久久无码专区精东影业| 久久精品国产亚洲AV无码麻豆 | 色综合久久无码五十路人妻| 狠狠色丁香婷婷综合久久来 | 九九精品99久久久香蕉| 久久狠狠一本精品综合网| 亚洲香蕉网久久综合影视| 久久久久人妻精品一区三寸蜜桃| 无码国内精品久久人妻| 韩国三级中文字幕hd久久精品| 中文字幕久久波多野结衣av| 国产毛片久久久久久国产毛片| 久久精品国产清高在天天线| 久久国语露脸国产精品电影| 国产精品久久久久久久午夜片| 久久久久亚洲AV片无码下载蜜桃| 久久久久噜噜噜亚洲熟女综合| 国产精品对白刺激久久久| 亚洲AV无码久久精品色欲| 无码任你躁久久久久久老妇App| 久久se精品一区二区影院| 精品国产婷婷久久久| 色综合久久综精品| 久久这里只有精品久久| 国产精品久久久天天影视| 久久精品国产亚洲av水果派| 久久久久99精品成人片直播| 亚洲精品无码久久一线| 色狠狠久久AV五月综合| 久久久精品国产sm调教网站|