亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? qsql_odbc.cpp

?? QT 開(kāi)發(fā)環(huán)境里面一個(gè)很重要的文件
?? CPP
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
    setAt(i);    return true;}bool QODBCResult::fetchNext(){    SQLRETURN r;    d->clearValues();    r = SQLFetchScroll(d->hStmt,                       SQL_FETCH_NEXT,                       0);    if (r != SQL_SUCCESS && r != SQL_SUCCESS_WITH_INFO) {        if (r != SQL_NO_DATA)            setLastError(qMakeError(QCoreApplication::translate("QODBCResult",                "Unable to fetch next"), QSqlError::ConnectionError, d));        return false;    }    setAt(at() + 1);    return true;}bool QODBCResult::fetchFirst(){    if (isForwardOnly() && at() != QSql::BeforeFirstRow)        return false;    SQLRETURN r;    d->clearValues();    if (isForwardOnly()) {        return fetchNext();    }    r = SQLFetchScroll(d->hStmt,                       SQL_FETCH_FIRST,                       0);    if (r != SQL_SUCCESS)        return false;    setAt(0);    return true;}bool QODBCResult::fetchPrior(){    if (isForwardOnly())        return false;    SQLRETURN r;    d->clearValues();    r = SQLFetchScroll(d->hStmt,                       SQL_FETCH_PRIOR,                       0);    if (r != SQL_SUCCESS)        return false;    setAt(at() - 1);    return true;}bool QODBCResult::fetchLast(){    SQLRETURN r;    d->clearValues();    if (isForwardOnly()) {        // cannot seek to last row in forwardOnly mode, so we have to use brute force        int i = at();        if (i == QSql::AfterLastRow)            return false;        if (i == QSql::BeforeFirstRow)            i = 0;        while (fetchNext())            ++i;        setAt(i);        return true;    }    r = SQLFetchScroll(d->hStmt,                       SQL_FETCH_LAST,                       0);    if (r != SQL_SUCCESS) {        return false;    }    SQLINTEGER currRow;    r = SQLGetStmtAttr(d->hStmt,                        SQL_ROW_NUMBER,                        &currRow,                        SQL_IS_INTEGER,                        0);    if (r != SQL_SUCCESS)        return false;    setAt(currRow-1);    return true;}QVariant QODBCResult::data(int field){    if (field >= d->rInf.count() || field < 0) {        qWarning("QODBCResult::data: column %d out of range", field);        return QVariant();    }    if (field < d->fieldCacheIdx)        return d->fieldCache.at(field);    SQLRETURN r(0);    QSQLLEN lengthIndicator = 0;    for (int i = d->fieldCacheIdx; i <= field; ++i) {        // some servers do not support fetching column n after we already        // fetched column n+1, so cache all previous columns here        const QSqlField info = d->rInf.field(i);        switch (info.type()) {        case QVariant::LongLong:            d->fieldCache[i] = qGetBigIntData(d->hStmt, i);        break;        case QVariant::Int:            d->fieldCache[i] = qGetIntData(d->hStmt, i);        break;        case QVariant::Date:            DATE_STRUCT dbuf;            r = SQLGetData(d->hStmt,                            i + 1,                            SQL_C_DATE,                            (SQLPOINTER)&dbuf,                            0,                            &lengthIndicator);            if ((r == SQL_SUCCESS || r == SQL_SUCCESS_WITH_INFO) && (lengthIndicator != SQL_NULL_DATA))                d->fieldCache[i] = QVariant(QDate(dbuf.year, dbuf.month, dbuf.day));            else                d->fieldCache[i] = QVariant(QVariant::Date);        break;        case QVariant::Time:            TIME_STRUCT tbuf;            r = SQLGetData(d->hStmt,                            i + 1,                            SQL_C_TIME,                            (SQLPOINTER)&tbuf,                            0,                            &lengthIndicator);            if ((r == SQL_SUCCESS || r == SQL_SUCCESS_WITH_INFO) && (lengthIndicator != SQL_NULL_DATA))                d->fieldCache[i] = QVariant(QTime(tbuf.hour, tbuf.minute, tbuf.second));            else                d->fieldCache[i] = QVariant(QVariant::Time);        break;        case QVariant::DateTime:            TIMESTAMP_STRUCT dtbuf;            r = SQLGetData(d->hStmt,                            i + 1,                            SQL_C_TIMESTAMP,                            (SQLPOINTER)&dtbuf,                            0,                            &lengthIndicator);            if ((r == SQL_SUCCESS || r == SQL_SUCCESS_WITH_INFO) && (lengthIndicator != SQL_NULL_DATA))                d->fieldCache[i] = QVariant(QDateTime(QDate(dtbuf.year, dtbuf.month, dtbuf.day),                       QTime(dtbuf.hour, dtbuf.minute, dtbuf.second, dtbuf.fraction / 1000000)));            else                d->fieldCache[i] = QVariant(QVariant::DateTime);            break;        case QVariant::ByteArray:            d->fieldCache[i] = qGetBinaryData(d->hStmt, i);            break;        case QVariant::String:            d->fieldCache[i] = qGetStringData(d->hStmt, i, info.length(), true);            break;        case QVariant::Double:            if (info.typeID() == SQL_DECIMAL || info.typeID() == SQL_NUMERIC)                // bind Double values as string to prevent loss of precision                d->fieldCache[i] = qGetStringData(d->hStmt, i,                                       info.length() + 1, false); // length + 1 for the comma            else                d->fieldCache[i] = qGetDoubleData(d->hStmt, i);            break;        default:            d->fieldCache[i] = QVariant(qGetStringData(d->hStmt, i,                                                           info.length(), false));            break;        }        d->fieldCacheIdx = field + 1;    }    return d->fieldCache[field];}bool QODBCResult::isNull(int field){    if (field < 0 || field > d->fieldCache.size())        return true;    if (field <= d->fieldCacheIdx) {        // since there is no good way to find out whether the value is NULL        // without fetching the field we'll fetch it here.        // (data() also sets the NULL flag)        data(field);    }    return d->fieldCache.at(field).isNull();}int QODBCResult::size(){    return -1;}int QODBCResult::numRowsAffected(){    QSQLLEN affectedRowCount = 0;    SQLRETURN r = SQLRowCount(d->hStmt, &affectedRowCount);    if (r == SQL_SUCCESS)        return affectedRowCount;    else        qSqlWarning(QLatin1String("QODBCResult::numRowsAffected: Unable to count affected rows"), d);    return -1;}bool QODBCResult::prepare(const QString& query){    setActive(false);    setAt(QSql::BeforeFirstRow);    SQLRETURN r;    d->rInf.clear();    if (d->hStmt) {        r = SQLFreeHandle(SQL_HANDLE_STMT, d->hStmt);        if (r != SQL_SUCCESS) {            qSqlWarning(QLatin1String("QODBCResult::prepare: Unable to close statement"), d);            return false;        }    }    r  = SQLAllocHandle(SQL_HANDLE_STMT,                         d->hDbc,                         &d->hStmt);    if (r != SQL_SUCCESS) {        qSqlWarning(QLatin1String("QODBCResult::prepare: Unable to allocate statement handle"), d);        return false;    }    if (isForwardOnly()) {        r = SQLSetStmtAttr(d->hStmt,                            SQL_ATTR_CURSOR_TYPE,                            (SQLPOINTER)SQL_CURSOR_FORWARD_ONLY,                            SQL_IS_UINTEGER);    } else {        r = SQLSetStmtAttr(d->hStmt,                            SQL_ATTR_CURSOR_TYPE,                            (SQLPOINTER)SQL_CURSOR_STATIC,                            SQL_IS_UINTEGER);    }    if (r != SQL_SUCCESS && r != SQL_SUCCESS_WITH_INFO) {        setLastError(qMakeError(QCoreApplication::translate("QODBCResult",            "QODBCResult::reset: Unable to set 'SQL_CURSOR_STATIC' as statement attribute. "            "Please check your ODBC driver configuration"), QSqlError::StatementError, d));        return false;    }#ifdef UNICODE    r = SQLPrepare(d->hStmt,                    (SQLWCHAR*) query.unicode(),                    (SQLINTEGER) query.length());#else    QByteArray query8 = query.toLocal8Bit();    r = SQLPrepare(d->hStmt,                    (SQLCHAR*) query8.constData(),                    (SQLINTEGER) query8.length());#endif    if (r != SQL_SUCCESS) {        setLastError(qMakeError(QCoreApplication::translate("QODBCResult",                     "Unable to prepare statement"), QSqlError::StatementError, d));        return false;    }    return true;}bool QODBCResult::exec(){    SQLRETURN r;    QList<QByteArray> tmpStorage; // holds temporary buffers    QVarLengthArray<QSQLLEN, 32> indicators(boundValues().count());    memset(indicators.data(), 0, indicators.size() * sizeof(QSQLLEN));    setActive(false);    setAt(QSql::BeforeFirstRow);    d->rInf.clear();    d->fieldCacheIdx = 0;    if (!d->hStmt) {        qSqlWarning(QLatin1String("QODBCResult::exec: No statement handle available"), d);        return false;    }    if (isSelect())        SQLCloseCursor(d->hStmt);    // bind parameters - only positional binding allowed    QVector<QVariant>& values = boundValues();    int i;    for (i = 0; i < values.count(); ++i) {        if (bindValueType(i) & QSql::Out)            values[i].detach();        const QVariant &val = values.at(i);        QSQLLEN *ind = &indicators[i];        if (val.isNull())            *ind = SQL_NULL_DATA;        switch (val.type()) {            case QVariant::Date: {                QByteArray ba;                ba.resize(sizeof(DATE_STRUCT));                DATE_STRUCT *dt = (DATE_STRUCT *)ba.constData();                QDate qdt = val.toDate();                dt->year = qdt.year();                dt->month = qdt.month();                dt->day = qdt.day();                r = SQLBindParameter(d->hStmt,                                      i + 1,                                      qParamType[(QFlag)(bindValueType(i)) & QSql::InOut],                                      SQL_C_DATE,                                      SQL_DATE,                                      0,                                      0,                                      (void *) dt,                                      0,                                      *ind == SQL_NULL_DATA ? ind : NULL);                tmpStorage.append(ba);                break; }            case QVariant::Time: {                QByteArray ba;                ba.resize(sizeof(TIME_STRUCT));                TIME_STRUCT *dt = (TIME_STRUCT *)ba.constData();                QTime qdt = val.toTime();                dt->hour = qdt.hour();                dt->minute = qdt.minute();                dt->second = qdt.second();                r = SQLBindParameter(d->hStmt,                                      i + 1,                                      qParamType[(QFlag)(bindValueType(i)) & QSql::InOut],                                      SQL_C_TIME,                                      SQL_TIME,                                      0,                                      0,                                      (void *) dt,                                      0,                                      *ind == SQL_NULL_DATA ? ind : NULL);                tmpStorage.append(ba);                break; }            case QVariant::DateTime: {                QByteArray ba;                ba.resize(sizeof(TIMESTAMP_STRUCT));                TIMESTAMP_STRUCT * dt = (TIMESTAMP_STRUCT *)ba.constData();                QDateTime qdt = val.toDateTime();                dt->year = qdt.date().year();                dt->month = qdt.date().month();                dt->day = qdt.date().day();                dt->hour = qdt.time().hour();                dt->minute = qdt.time().minute();                dt->second = qdt.time().second();                dt->fraction = qdt.time().msec() * 1000000;                r = SQLBindParameter(d->hStmt,                                      i + 1,                                      qParamType[(QFlag)(bindValueType(i)) & QSql::InOut],                                      SQL_C_TIMESTAMP,                                      SQL_TIMESTAMP,                                      19,                                      0,                                      (void *) dt,                                      0,                                      *ind == SQL_NULL_DATA ? ind : NULL);                tmpStorage.append(ba);                break; }            case QVariant::Int:                r = SQLBindParameter(d->hStmt,                                      i + 1,                                      qParamType[(QFlag)(bindValueType(i)) & QSql::InOut],                                      SQL_C_SLONG,                                      SQL_INTEGER,                                      0,                                      0,                                      (void *) val.constData(),                                      0,                                      *ind == SQL_NULL_DATA ? ind : NULL);                break;            case QVariant::Double:                r = SQLBindParameter(d->hStmt,                                      i + 1,                                      qParamType[(QFlag)(bindValueType(i)) & QSql::InOut],                                      SQL_C_DOUBLE,                                      SQL_DOUBLE,                                      0,                                      0,                                      (void *) val.constData(),                                      0,                                      *ind == SQL_NULL_DATA ? ind : NULL);                break;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线免费一区三区| 日韩成人一区二区| 国产精品毛片高清在线完整版| 91麻豆精品国产91久久久使用方法 | 一本色道亚洲精品aⅴ| 成人伦理片在线| 成人av电影在线| www..com久久爱| 91在线你懂得| 欧美无乱码久久久免费午夜一区| 一本大道久久a久久综合婷婷| 91视频免费看| 欧美区视频在线观看| 日韩一本二本av| 久久久综合激的五月天| 国产精品入口麻豆九色| 亚洲精选视频在线| 午夜精品一区在线观看| 久久国产精品露脸对白| 国产成人啪午夜精品网站男同| 不卡一区二区中文字幕| 日本高清成人免费播放| 日韩午夜激情电影| 国产精品乱码一区二三区小蝌蚪| 亚洲色图视频网站| 日本视频一区二区| 国产成人免费网站| 欧美色中文字幕| 久久影院电视剧免费观看| 国产精品国产成人国产三级| 一区二区三区四区精品在线视频 | 精品一区二区三区日韩| 成人性色生活片| 欧美日韩极品在线观看一区| 精品国产一区二区精华| 亚洲丝袜美腿综合| 美美哒免费高清在线观看视频一区二区| 国产成人综合在线播放| 欧美日韩国产片| 欧美国产综合色视频| 天天操天天干天天综合网| 成人黄色小视频在线观看| 91精品中文字幕一区二区三区| 国产精品午夜春色av| 免费欧美日韩国产三级电影| 成人综合婷婷国产精品久久蜜臀| 欧美精品丝袜中出| 亚洲欧美综合网| 国产一区二区在线观看免费| 欧美少妇一区二区| 国产精品福利电影一区二区三区四区| 日韩国产成人精品| 日本精品免费观看高清观看| 久久综合色婷婷| 日韩精品一卡二卡三卡四卡无卡| 91在线高清观看| 欧美国产激情一区二区三区蜜月| 日本特黄久久久高潮| 欧美亚洲国产一区二区三区va| 日本一区二区三区四区在线视频 | 91在线免费视频观看| 久久久久久久综合狠狠综合| 日韩黄色小视频| 欧美日韩高清在线播放| 一区二区三区四区在线免费观看| 99热精品一区二区| 国产精品网站在线观看| 国产成人亚洲综合a∨猫咪| 精品免费日韩av| 精品在线一区二区三区| 日韩免费高清电影| 美女尤物国产一区| 91精品国产欧美一区二区18| 亚洲动漫第一页| 欧美精品九九99久久| 日本伊人色综合网| 日韩欧美中文字幕一区| 蜜臀va亚洲va欧美va天堂| 欧美一级艳片视频免费观看| 日本不卡不码高清免费观看| 日韩三级视频中文字幕| 老鸭窝一区二区久久精品| 日韩精品一区二区三区三区免费| 强制捆绑调教一区二区| 精品国产乱码久久久久久图片| 久久爱www久久做| 久久亚洲一区二区三区四区| 视频一区二区国产| 精品久久国产97色综合| 国产福利一区二区三区在线视频| 欧美激情一区二区在线| 日本精品免费观看高清观看| 亚洲欧美一区二区三区极速播放| 91小视频在线免费看| 午夜免费久久看| 久久综合99re88久久爱| 福利一区二区在线观看| 亚洲精品videosex极品| 7777精品伊人久久久大香线蕉最新版 | 亚洲人吸女人奶水| 欧美人牲a欧美精品| 久草在线在线精品观看| 国产精品国产馆在线真实露脸 | 日韩欧美资源站| 93久久精品日日躁夜夜躁欧美| 亚洲一区在线观看免费| 日韩手机在线导航| 91色九色蝌蚪| 韩国av一区二区三区在线观看| 国产精品丝袜一区| 91精品国产综合久久福利| 国产乱妇无码大片在线观看| 一区二区三区在线不卡| 日韩精品一区二区在线| 色八戒一区二区三区| 久久99久久99| 亚洲国产视频一区二区| 久久久精品黄色| 欧美日韩免费视频| 本田岬高潮一区二区三区| 男女男精品视频网| 亚洲女同ⅹxx女同tv| 久久夜色精品国产噜噜av| 欧美丝袜丝交足nylons图片| 丁香另类激情小说| 精油按摩中文字幕久久| 亚洲国产中文字幕在线视频综合| 久久精品欧美一区二区三区不卡 | 国产精品乱码人人做人人爱 | 最新日韩av在线| 精品国产精品网麻豆系列| 欧美在线观看视频一区二区| 成人免费观看av| 国内外精品视频| 寂寞少妇一区二区三区| 亚洲第一成年网| 一区二区欧美视频| 亚洲日本在线看| 国产精品久久久久久一区二区三区| 91精品国产手机| 欧美一区二区成人6969| 欧美日韩日日夜夜| 在线精品观看国产| 91国偷自产一区二区使用方法| 99r精品视频| 91在线国产福利| 91免费视频观看| 91丝袜美腿高跟国产极品老师 | 久久狠狠亚洲综合| 免费xxxx性欧美18vr| 日韩高清在线不卡| 日本大胆欧美人术艺术动态| 天堂成人国产精品一区| 亚洲第一主播视频| 日韩一区精品字幕| 久久99最新地址| 韩国女主播一区二区三区| 国产另类ts人妖一区二区| 国产伦理精品不卡| 风间由美一区二区av101| 成人白浆超碰人人人人| 99热在这里有精品免费| 在线观看一区二区精品视频| 在线视频中文字幕一区二区| 欧美日韩精品综合在线| 欧美日韩视频不卡| xfplay精品久久| 国产亚洲欧洲一区高清在线观看| 国产欧美日韩亚州综合| 中文字幕视频一区| 一区二区不卡在线播放| 日本中文字幕一区| 高清久久久久久| 91麻豆6部合集magnet| 9191久久久久久久久久久| 日韩写真欧美这视频| 国产欧美精品一区aⅴ影院| 亚洲人吸女人奶水| 日韩av在线播放中文字幕| 精品一区二区国语对白| 99久久精品免费看国产| 欧美精品久久久久久久多人混战| 精品久久久久久久久久久久久久久| 久久久国产午夜精品| 一二三区精品福利视频| 久久精品国产澳门| 91蜜桃免费观看视频| 日韩视频中午一区| 亚洲男人的天堂在线观看| 婷婷中文字幕一区三区| 成人免费精品视频| 日韩一级二级三级精品视频| 国产精品的网站| 麻豆精品国产91久久久久久| av在线不卡电影| 欧美白人最猛性xxxxx69交| 一区二区三区四区在线| 粉嫩蜜臀av国产精品网站| 91精品国产全国免费观看| 一区二区视频免费在线观看|