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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? qsql_odbc.cpp

?? QT 開發環境里面一個很重要的文件
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
    // do not query for SQL_API_SQLFETCHSCROLL because it can't be used at this time    static const SQLUSMALLINT reqFunc[] = {                SQL_API_SQLDESCRIBECOL, SQL_API_SQLGETDATA, SQL_API_SQLCOLUMNS,                SQL_API_SQLGETSTMTATTR, SQL_API_SQLGETDIAGREC, SQL_API_SQLEXECDIRECT,                SQL_API_SQLGETINFO, SQL_API_SQLTABLES, 0    };    // these functions are optional    static const SQLUSMALLINT optFunc[] = {        SQL_API_SQLNUMRESULTCOLS, SQL_API_SQLROWCOUNT, 0    };    SQLRETURN r;    SQLUSMALLINT sup;    int i;    // check the required functions    for (i = 0; reqFunc[i] != 0; ++i) {        r = SQLGetFunctions(hDbc, reqFunc[i], &sup);        if (r != SQL_SUCCESS) {            qSqlWarning(QLatin1String("QODBCDriver::checkDriver: Cannot get list of supported functions"), this);            return false;        }        if (sup == SQL_FALSE) {            qWarning ("QODBCDriver::open: Warning - Driver doesn't support all needed functionality (%d). "                       "Please look at the Qt SQL Module Driver documentation for more information.", reqFunc[i]);            return false;        }    }    // these functions are optional and just generate a warning    for (i = 0; optFunc[i] != 0; ++i) {        r = SQLGetFunctions(hDbc, optFunc[i], &sup);        if (r != SQL_SUCCESS) {            qSqlWarning(QLatin1String("QODBCDriver::checkDriver: Cannot get list of supported functions"), this);            return false;        }        if (sup == SQL_FALSE) {            qWarning("QODBCDriver::checkDriver: Warning - Driver doesn't support some non-critical functions (%d)", optFunc[i]);            return true;        }    }#endif //ODBC_CHECK_DRIVER    return true;}void QODBCDriverPrivate::checkSchemaUsage(){    SQLRETURN   r;    SQLUINTEGER val;    r = SQLGetInfo(hDbc,                   SQL_SCHEMA_USAGE,                   (SQLPOINTER) &val,                   sizeof(val),                   NULL);    if (r == SQL_SUCCESS || r == SQL_SUCCESS_WITH_INFO)        useSchema = (val != 0);}QSqlResult *QODBCDriver::createResult() const{    return new QODBCResult(this, d);}bool QODBCDriver::beginTransaction(){    if (!isOpen()) {        qWarning(" QODBCDriver::beginTransaction: Database not open");        return false;    }    SQLUINTEGER ac(SQL_AUTOCOMMIT_OFF);    SQLRETURN r  = SQLSetConnectAttr(d->hDbc,                                      SQL_ATTR_AUTOCOMMIT,                                      (SQLPOINTER)ac,                                      sizeof(ac));    if (r != SQL_SUCCESS) {        setLastError(qMakeError(tr("Unable to disable autocommit"),                     QSqlError::TransactionError, d));        return false;    }    return true;}bool QODBCDriver::commitTransaction(){    if (!isOpen()) {        qWarning(" QODBCDriver::commitTransaction: Database not open");        return false;    }    SQLRETURN r = SQLEndTran(SQL_HANDLE_DBC,                              d->hDbc,                              SQL_COMMIT);    if (r != SQL_SUCCESS) {        setLastError(qMakeError(tr("Unable to commit transaction"),                     QSqlError::TransactionError, d));        return false;    }    return endTrans();}bool QODBCDriver::rollbackTransaction(){    if (!isOpen()) {        qWarning(" QODBCDriver::rollbackTransaction: Database not open");        return false;    }    SQLRETURN r = SQLEndTran(SQL_HANDLE_DBC,                              d->hDbc,                              SQL_ROLLBACK);    if (r != SQL_SUCCESS) {        setLastError(qMakeError(tr("Unable to rollback transaction"),                     QSqlError::TransactionError, d));        return false;    }    return endTrans();}bool QODBCDriver::endTrans(){    SQLUINTEGER ac(SQL_AUTOCOMMIT_ON);    SQLRETURN r  = SQLSetConnectAttr(d->hDbc,                                      SQL_ATTR_AUTOCOMMIT,                                      (SQLPOINTER)ac,                                      sizeof(ac));    if (r != SQL_SUCCESS) {        setLastError(qMakeError(tr("Unable to enable autocommit"), QSqlError::TransactionError, d));        return false;    }    return true;}QStringList QODBCDriver::tables(QSql::TableType type) const{    QStringList tl;    if (!isOpen())        return tl;    SQLHANDLE hStmt;    SQLRETURN r = SQLAllocHandle(SQL_HANDLE_STMT,                                  d->hDbc,                                  &hStmt);    if (r != SQL_SUCCESS) {        qSqlWarning(QLatin1String("QODBCDriver::tables: Unable to allocate handle"), d);        return tl;    }    r = SQLSetStmtAttr(hStmt,                        SQL_ATTR_CURSOR_TYPE,                        (SQLPOINTER)SQL_CURSOR_FORWARD_ONLY,                        SQL_IS_UINTEGER);    QString tableType;    if (type & QSql::Tables)        tableType += QLatin1String("TABLE,");    if (type & QSql::Views)        tableType += QLatin1String("VIEW,");    if (type & QSql::SystemTables)        tableType += QLatin1String("SYSTEM TABLE,");    if (tableType.isEmpty())        return tl;    tableType.chop(1);    r = SQLTables(hStmt,                   NULL,                   0,                   NULL,                   0,                   NULL,                   0,#ifdef UNICODE                   (SQLWCHAR*)tableType.unicode(),#else                   (SQLCHAR*)tableType.toLatin1().constData(),#endif                   tableType.length() /* characters, not bytes */);    if (r != SQL_SUCCESS)        qSqlWarning(QLatin1String("QODBCDriver::tables Unable to execute table list"), d);    r = SQLFetchScroll(hStmt,                        SQL_FETCH_NEXT,                        0);    while (r == SQL_SUCCESS) {        QString fieldVal = qGetStringData(hStmt, 2, -1, d->unicode);        tl.append(fieldVal);        r = SQLFetchScroll(hStmt,                            SQL_FETCH_NEXT,                            0);    }    r = SQLFreeHandle(SQL_HANDLE_STMT, hStmt);    if (r!= SQL_SUCCESS)        qSqlWarning(QLatin1String("QODBCDriver: Unable to free statement handle") + QString::number(r), d);    return tl;}QSqlIndex QODBCDriver::primaryIndex(const QString& tablename) const{    QSqlIndex index(tablename);    if (!isOpen())        return index;    bool usingSpecialColumns = false;    QSqlRecord rec = record(tablename);    SQLHANDLE hStmt;    SQLRETURN r = SQLAllocHandle(SQL_HANDLE_STMT,                                  d->hDbc,                                  &hStmt);    if (r != SQL_SUCCESS) {        qSqlWarning(QLatin1String("QODBCDriver::primaryIndex: Unable to list primary key"), d);        return index;    }    QString catalog, schema, table;    d->splitTableQualifier(tablename, catalog, schema, table);    r = SQLSetStmtAttr(hStmt,                        SQL_ATTR_CURSOR_TYPE,                        (SQLPOINTER)SQL_CURSOR_FORWARD_ONLY,                        SQL_IS_UINTEGER);    r = SQLPrimaryKeys(hStmt,#ifdef UNICODE                        catalog.length() == 0 ? NULL : (SQLWCHAR*)catalog.unicode(),#else                        catalog.length() == 0 ? NULL : (SQLCHAR*)catalog.toLatin1().constData(),#endif                        catalog.length(),#ifdef UNICODE                        schema.length() == 0 ? NULL : (SQLWCHAR*)schema.unicode(),#else                        schema.length() == 0 ? NULL : (SQLCHAR*)schema.toLatin1().constData(),#endif                        schema.length(),#ifdef UNICODE                        (SQLWCHAR*)table.unicode(),#else                        (SQLCHAR*)table.toLatin1().constData(),#endif                        table.length() /* in characters, not in bytes */);    // if the SQLPrimaryKeys() call does not succeed (e.g the driver    // does not support it) - try an alternative method to get hold of    // the primary index (e.g MS Access and FoxPro)    if (r != SQL_SUCCESS) {            r = SQLSpecialColumns(hStmt,                        SQL_BEST_ROWID,#ifdef UNICODE                        catalog.length() == 0 ? NULL : (SQLWCHAR*)catalog.unicode(),#else                        catalog.length() == 0 ? NULL : (SQLCHAR*)catalog.toLatin1().constData(),#endif                        catalog.length(),#ifdef UNICODE                        schema.length() == 0 ? NULL : (SQLWCHAR*)schema.unicode(),#else                        schema.length() == 0 ? NULL : (SQLCHAR*)schema.toLatin1().constData(),#endif                        schema.length(),#ifdef UNICODE                        (SQLWCHAR*)table.unicode(),#else                        (SQLCHAR*)table.toLatin1().constData(),#endif                        table.length(),                        SQL_SCOPE_CURROW,                        SQL_NULLABLE);            if (r != SQL_SUCCESS) {                qSqlWarning(QLatin1String("QODBCDriver::primaryIndex: Unable to execute primary key list"), d);            } else {                usingSpecialColumns = true;            }    }    r = SQLFetchScroll(hStmt,                        SQL_FETCH_NEXT,                        0);    int fakeId = 0;    QString cName, idxName;    // Store all fields in a StringList because some drivers can't detail fields in this FETCH loop    while (r == SQL_SUCCESS) {        if (usingSpecialColumns) {            cName = qGetStringData(hStmt, 1, -1, d->unicode); // column name            idxName = QString::number(fakeId++); // invent a fake index name        } else {            cName = qGetStringData(hStmt, 3, -1, d->unicode); // column name            idxName = qGetStringData(hStmt, 5, -1, d->unicode); // pk index name        }        index.append(rec.field(cName));        index.setName(idxName);        r = SQLFetchScroll(hStmt,                            SQL_FETCH_NEXT,                            0);    }    r = SQLFreeHandle(SQL_HANDLE_STMT, hStmt);    if (r!= SQL_SUCCESS)        qSqlWarning(QLatin1String("QODBCDriver: Unable to free statement handle") + QString::number(r), d);    return index;}QSqlRecord QODBCDriver::record(const QString& tablename) const{    QSqlRecord fil;    if (!isOpen())        return fil;    SQLHANDLE hStmt;    QString catalog, schema, table;    d->splitTableQualifier(tablename, catalog, schema, table);    SQLRETURN r = SQLAllocHandle(SQL_HANDLE_STMT,                                  d->hDbc,                                  &hStmt);    if (r != SQL_SUCCESS) {        qSqlWarning(QLatin1String("QODBCDriver::record: Unable to allocate handle"), d);        return fil;    }    r = SQLSetStmtAttr(hStmt,                        SQL_ATTR_CURSOR_TYPE,                        (SQLPOINTER)SQL_CURSOR_FORWARD_ONLY,                        SQL_IS_UINTEGER);    r =  SQLColumns(hStmt,#ifdef UNICODE                     catalog.length() == 0 ? NULL : (SQLWCHAR*)catalog.unicode(),#else                     catalog.length() == 0 ? NULL : (SQLCHAR*)catalog.toLatin1().constData(),#endif                     catalog.length(),#ifdef UNICODE                     schema.length() == 0 ? NULL : (SQLWCHAR*)schema.unicode(),#else                     schema.length() == 0 ? NULL : (SQLCHAR*)schema.toLatin1().constData(),#endif                     schema.length(),#ifdef UNICODE                     (SQLWCHAR*)table.unicode(),#else                     (SQLCHAR*)table.toLatin1().constData(),#endif                     table.length(),                     NULL,                     0);    if (r != SQL_SUCCESS)        qSqlWarning(QLatin1String("QODBCDriver::record: Unable to execute column list"), d);    r = SQLFetchScroll(hStmt,                        SQL_FETCH_NEXT,                        0);    // Store all fields in a StringList because some drivers can't detail fields in this FETCH loop    while (r == SQL_SUCCESS) {        fil.append(qMakeFieldInfo(hStmt, d));        r = SQLFetchScroll(hStmt,                            SQL_FETCH_NEXT,                            0);    }    r = SQLFreeHandle(SQL_HANDLE_STMT, hStmt);    if (r!= SQL_SUCCESS)        qSqlWarning(QLatin1String("QODBCDriver: Unable to free statement handle ") + QString::number(r), d);    return fil;}QString QODBCDriver::formatValue(const QSqlField &field,                                 bool trimStrings) const{    QString r;    if (field.isNull()) {        r = QLatin1String("NULL");    } else if (field.type() == QVariant::DateTime) {        // Use an escape sequence for the datetime fields        if (field.value().toDateTime().isValid()){            QDate dt = field.value().toDateTime().date();            QTime tm = field.value().toDateTime().time();            // Dateformat has to be "yyyy-MM-dd hh:mm:ss", with leading zeroes if month or day < 10            r = QLatin1String("{ ts '") +                QString::number(dt.year()) + QLatin1Char('-') +                QString::number(dt.month()).rightJustified(2, QLati

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产入口在线| 亚洲老妇xxxxxx| 不卡高清视频专区| 免费成人深夜小野草| 日韩一级片网址| 欧美日韩中文一区| 91亚洲午夜精品久久久久久| 国产一区二区三区综合| 天堂va蜜桃一区二区三区| 亚洲欧美二区三区| 国产精品国产三级国产三级人妇| 91精品国产欧美一区二区成人 | 91在线无精精品入口| 视频一区视频二区在线观看| 亚洲色图视频网| 成人欧美一区二区三区白人| 国产亚洲一本大道中文在线| 日韩美女一区二区三区四区| 日韩一区二区三区四区五区六区| 欧美日韩在线一区二区| 在线观看亚洲专区| 在线这里只有精品| 欧美日韩国产天堂| 欧美在线不卡一区| 欧美日本精品一区二区三区| 欧美日韩另类国产亚洲欧美一级| 欧美日韩在线一区二区| 91蜜桃视频在线| 欧美性欧美巨大黑白大战| 日本道免费精品一区二区三区| 粉嫩aⅴ一区二区三区四区五区 | 精品久久久久久久久久久久包黑料| 欧美精品色综合| 欧美大片在线观看一区| 日韩欧美的一区| 中文字幕+乱码+中文字幕一区| 日本一区二区成人在线| 中文字幕一区在线观看| 依依成人精品视频| 亚洲欧洲日韩女同| 亚洲一区二区三区四区在线| 视频一区二区三区中文字幕| 视频一区二区三区入口| 经典三级在线一区| 91蝌蚪国产九色| 欧美无砖砖区免费| 欧美成人video| 综合网在线视频| 一区二区三区免费网站| 久久99这里只有精品| 成人精品小蝌蚪| 欧美视频在线一区二区三区| 国产日产欧美精品一区二区三区| 天堂成人国产精品一区| 在线观看一区二区精品视频| 国产精品另类一区| 国产成人午夜片在线观看高清观看| 欧美高清精品3d| 一区二区三区成人| 91麻豆成人久久精品二区三区| 国产女同性恋一区二区| 国产成人午夜电影网| 久久夜色精品国产噜噜av| 麻豆视频一区二区| 91麻豆精品国产91久久久久久 | 不卡一区二区在线| 亚洲国产精品国自产拍av| 国产一区久久久| 久久综合九色综合欧美亚洲| 美女视频黄 久久| 日韩一区和二区| 麻豆精品久久精品色综合| 欧美一区二区三区白人| 日本不卡1234视频| 欧美成人免费网站| 国产精品一区二区久激情瑜伽| 欧美tickling挠脚心丨vk| 蜜臀av性久久久久蜜臀aⅴ流畅| 欧美亚洲综合久久| 视频一区欧美日韩| www国产成人| 国产aⅴ精品一区二区三区色成熟| 久久九九久久九九| 成人污视频在线观看| 亚洲丝袜另类动漫二区| 91久久香蕉国产日韩欧美9色| 亚洲午夜在线电影| 91精品国产一区二区三区| 久久99精品国产| 国产精品女人毛片| 欧美色窝79yyyycom| 日本成人中文字幕| 2023国产精品| 97久久精品人人爽人人爽蜜臀| 1区2区3区国产精品| 欧美日本高清视频在线观看| 日本aⅴ精品一区二区三区 | 在线亚洲人成电影网站色www| 中文字幕亚洲不卡| 欧美日韩国产综合久久 | 亚洲精品欧美专区| 欧美日本乱大交xxxxx| 久久99国产精品久久| 国产精品乱码久久久久久| 欧美私模裸体表演在线观看| 亚洲成在人线免费| www激情久久| 欧美在线|欧美| 国产一区二区三区在线观看精品 | 成人免费黄色大片| 亚洲mv大片欧洲mv大片精品| 26uuu国产日韩综合| 在线看日韩精品电影| 韩国v欧美v亚洲v日本v| 亚洲欧美韩国综合色| 精品少妇一区二区三区在线视频| 99re这里只有精品首页| 国产主播一区二区| 亚洲午夜av在线| 国产欧美日本一区视频| 欧美日韩国产成人在线91| 国产不卡在线一区| 蜜臀av性久久久久蜜臀aⅴ| 国产精品麻豆欧美日韩ww| 精品日韩99亚洲| 欧美日本一区二区| 91在线小视频| 不卡一区二区在线| 国产乱对白刺激视频不卡| 天堂va蜜桃一区二区三区| 亚洲精品美腿丝袜| 国产精品第一页第二页第三页| 日韩欧美亚洲国产精品字幕久久久 | 欧美人动与zoxxxx乱| 波多野结衣视频一区| 国产一二三精品| 久久99精品国产.久久久久久| 亚洲一区二区三区四区五区中文| 亚洲国产精品激情在线观看| 精品欧美一区二区三区精品久久 | 久久先锋资源网| 欧美日韩三级视频| 欧美日韩国产成人在线91| 91福利国产成人精品照片| fc2成人免费人成在线观看播放 | 欧美成va人片在线观看| 欧美一区二区三级| 5858s免费视频成人| 在线免费观看日韩欧美| 97超碰欧美中文字幕| 91一区二区三区在线播放| 99这里都是精品| 91色九色蝌蚪| 欧美日韩午夜在线| 日韩一区二区三区四区五区六区| 欧美另类z0zxhd电影| 欧美精品电影在线播放| 91.xcao| 2020国产精品| 欧美极品aⅴ影院| 1024国产精品| 亚洲高清久久久| 日韩av高清在线观看| 国模少妇一区二区三区| 国产乱码精品一区二区三区av | 亚洲制服丝袜av| 亚洲一区二区在线免费看| 亚洲第一激情av| 久久成人久久爱| 懂色av中文字幕一区二区三区| av电影在线观看一区| 欧美日韩一区二区三区在线| 日韩一区二区三区免费观看| 久久理论电影网| 亚洲欧美日韩一区二区| 丝袜亚洲精品中文字幕一区| 久久精工是国产品牌吗| 波波电影院一区二区三区| 欧美日本一区二区三区| 久久这里只精品最新地址| 中文字幕中文字幕在线一区| 午夜精品一区二区三区电影天堂| 日韩高清中文字幕一区| 国产91综合一区在线观看| 在线精品视频小说1| 精品美女一区二区| 亚洲图片另类小说| 日韩电影一二三区| 不卡的电影网站| 日韩欧美国产一区在线观看| 国产精品超碰97尤物18| 久久精品国产一区二区三区免费看| 国产成人精品亚洲777人妖| 欧美日韩国产小视频| 久久九九影视网| 日韩va亚洲va欧美va久久| 91美女在线视频| 精品欧美黑人一区二区三区| 亚洲精品自拍动漫在线| 国产成人在线看|