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

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

?? qsql_mysql.cpp

?? QT 開發環境里面一個很重要的文件
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
    }    r = mysql_stmt_execute(d->stmt);    qDeleteAll(timeVector);    if (r != 0) {        setLastError(qMakeStmtError(QCoreApplication::translate("QMYSQLResult",                     "Unable to execute statement"), QSqlError::StatementError, d->stmt));        return false;    }    //if there is meta-data there is also data    setSelect(d->meta);    d->rowsAffected = mysql_stmt_affected_rows(d->stmt);    if (isSelect()) {        my_bool update_max_length = true;        r = mysql_stmt_bind_result(d->stmt, d->inBinds);        if (r != 0) {            setLastError(qMakeStmtError(QCoreApplication::translate("QMYSQLResult",                         "Unable to bind outvalues"), QSqlError::StatementError, d->stmt));            return false;        }        if (d->hasBlobs)            mysql_stmt_attr_set(d->stmt, STMT_ATTR_UPDATE_MAX_LENGTH, &update_max_length);        r = mysql_stmt_store_result(d->stmt);        if (r != 0) {            setLastError(qMakeStmtError(QCoreApplication::translate("QMYSQLResult",                         "Unable to store statement results"), QSqlError::StatementError, d->stmt));            return false;        }        if (d->hasBlobs) {            // mysql_stmt_store_result() with STMT_ATTR_UPDATE_MAX_LENGTH set to true crashes            // when called without a preceding call to mysql_stmt_bind_result()            // in versions < 4.1.8            d->bindBlobs();            r = mysql_stmt_bind_result(d->stmt, d->inBinds);            if (r != 0) {                setLastError(qMakeStmtError(QCoreApplication::translate("QMYSQLResult",                             "Unable to bind outvalues"), QSqlError::StatementError, d->stmt));                return false;            }        }        setAt(QSql::BeforeFirstRow);    }    setActive(true);    return true;}#endif/////////////////////////////////////////////////////////static void qServerInit(){#ifndef Q_NO_MYSQL_EMBEDDED# if MYSQL_VERSION_ID >= 40000    static bool init = false;    if (init)        return;    // this should only be called once    // has no effect on client/server library    // but is vital for the embedded lib    if (mysql_server_init(0, 0, 0)) {        qWarning("QMYSQLDriver::qServerInit: unable to start server.");    }    init = true;# endif // MYSQL_VERSION_ID#endif // Q_NO_MYSQL_EMBEDDED}QMYSQLDriver::QMYSQLDriver(QObject * parent)    : QSqlDriver(parent){    init();    qServerInit();}/*!    Create a driver instance with the open connection handle, \a con.    The instance's parent (owner) is \a parent.*/QMYSQLDriver::QMYSQLDriver(MYSQL * con, QObject * parent)    : QSqlDriver(parent){    init();    if (con) {        d->mysql = (MYSQL *) con;#ifndef QT_NO_TEXTCODEC        d->tc = codec(con);#endif        setOpen(true);        setOpenError(false);    } else {        qServerInit();    }}void QMYSQLDriver::init(){    d = new QMYSQLDriverPrivate();    d->mysql = 0;}QMYSQLDriver::~QMYSQLDriver(){    delete d;#ifndef Q_NO_MYSQL_EMBEDDED# if MYSQL_VERSION_ID > 40000    mysql_server_end();# endif#endif}bool QMYSQLDriver::hasFeature(DriverFeature f) const{    switch (f) {    case Transactions:// CLIENT_TRANSACTION should be defined in all recent mysql client libs > 3.23.34#ifdef CLIENT_TRANSACTIONS        if (d->mysql) {            if ((d->mysql->server_capabilities & CLIENT_TRANSACTIONS) == CLIENT_TRANSACTIONS)                return true;        }#endif        return false;    case NamedPlaceholders:    case BatchOperations:        return false;    case QuerySize:    case BLOB:    case LastInsertId:        return true;    case Unicode:        return true;    case PreparedQueries:    case PositionalPlaceholders:#if MYSQL_VERSION_ID >= 40108        return d->preparedQuerysEnabled;#else        return false;#endif    }    return false;}static void setOptionFlag(uint &optionFlags, const QString &opt){    if (opt == QLatin1String("CLIENT_COMPRESS"))        optionFlags |= CLIENT_COMPRESS;    else if (opt == QLatin1String("CLIENT_FOUND_ROWS"))        optionFlags |= CLIENT_FOUND_ROWS;    else if (opt == QLatin1String("CLIENT_IGNORE_SPACE"))        optionFlags |= CLIENT_IGNORE_SPACE;    else if (opt == QLatin1String("CLIENT_INTERACTIVE"))        optionFlags |= CLIENT_INTERACTIVE;    else if (opt == QLatin1String("CLIENT_NO_SCHEMA"))        optionFlags |= CLIENT_NO_SCHEMA;    else if (opt == QLatin1String("CLIENT_ODBC"))        optionFlags |= CLIENT_ODBC;    else if (opt == QLatin1String("CLIENT_SSL"))        optionFlags |= CLIENT_SSL;    else        qWarning("QMYSQLDriver::open: Unknown connect option '%s'", opt.toLocal8Bit().constData());}bool QMYSQLDriver::open(const QString& db,                         const QString& user,                         const QString& password,                         const QString& host,                         int port,                         const QString& connOpts){    if (isOpen())        close();    /* This is a hack to get MySQL's stored procedure support working.       Since a stored procedure _may_ return multiple result sets,       we have to enable CLIEN_MULTI_STATEMENTS here, otherwise _any_       stored procedure call will fail.    */    unsigned int optionFlags = Q_CLIENT_MULTI_STATEMENTS;    const QStringList opts(connOpts.split(QLatin1Char(';'), QString::SkipEmptyParts));    QString unixSocket;    // extract the real options from the string    for (int i = 0; i < opts.count(); ++i) {        QString tmp(opts.at(i).simplified());        int idx;        if ((idx = tmp.indexOf(QLatin1Char('='))) != -1) {            QString val = tmp.mid(idx + 1).simplified();            QString opt = tmp.left(idx).simplified();            if (opt == QLatin1String("UNIX_SOCKET"))                unixSocket = val;            else if (val == QLatin1String("TRUE") || val == QLatin1String("1"))                setOptionFlag(optionFlags, tmp.left(idx).simplified());            else                qWarning("QMYSQLDriver::open: Illegal connect option value '%s'",                         tmp.toLocal8Bit().constData());        } else {            setOptionFlag(optionFlags, tmp);        }    }    if ((d->mysql = mysql_init((MYSQL*) 0)) &&            mysql_real_connect(d->mysql,                               host.isNull() ? static_cast<const char *>(0)                                             : host.toLocal8Bit().constData(),                               user.isNull() ? static_cast<const char *>(0)                                             : user.toLocal8Bit().constData(),                               password.isNull() ? static_cast<const char *>(0)                                                 : password.toLocal8Bit().constData(),                               db.isNull() ? static_cast<const char *>(0)                                           : db.toLocal8Bit().constData(),                               (port > -1) ? port : 0,                               unixSocket.isNull() ? static_cast<const char *>(0)                                           : unixSocket.toLocal8Bit().constData(),                               optionFlags))    {        if (!db.isEmpty() && mysql_select_db(d->mysql, db.toLocal8Bit().constData())) {            setLastError(qMakeError(tr("Unable to open database '") + db +                         QLatin1Char('\''), QSqlError::ConnectionError, d));            mysql_close(d->mysql);            setOpenError(true);            return false;        }    } else {        setLastError(qMakeError(tr("Unable to connect"),                     QSqlError::ConnectionError, d));        mysql_close(d->mysql);        setOpenError(true);        return false;    }#if MYSQL_VERSION_ID >= 50007    // force the communication to be utf8    mysql_set_character_set(d->mysql, "utf8");#endif#ifndef QT_NO_TEXTCODEC    d->tc = codec(d->mysql);#endif#if MYSQL_VERSION_ID >= 40108    d->preparedQuerysEnabled = mysql_get_client_version() >= 40108                        && mysql_get_server_version(d->mysql) >= 40100;#else    d->preparedQuerysEnabled = false;#endif    setOpen(true);    setOpenError(false);    return true;}void QMYSQLDriver::close(){    if (isOpen()) {        mysql_close(d->mysql);        setOpen(false);        setOpenError(false);    }}QSqlResult *QMYSQLDriver::createResult() const{    return new QMYSQLResult(this);}QStringList QMYSQLDriver::tables(QSql::TableType type) const{    QStringList tl;    if (!isOpen())        return tl;    if (!(type & QSql::Tables))        return tl;    MYSQL_RES* tableRes = mysql_list_tables(d->mysql, NULL);    MYSQL_ROW row;    int i = 0;    while (tableRes) {        mysql_data_seek(tableRes, i);        row = mysql_fetch_row(tableRes);        if (!row)            break;        tl.append(toUnicode(d->tc, row[0]));        i++;    }    mysql_free_result(tableRes);    return tl;}QSqlIndex QMYSQLDriver::primaryIndex(const QString& tablename) const{    QSqlIndex idx;    bool prepQ;    if (!isOpen())        return idx;    prepQ = d->preparedQuerys;    d->preparedQuerys = false;    QSqlQuery i(createResult());    QString stmt(QLatin1String("show index from %1;"));    QSqlRecord fil = record(tablename);    i.exec(stmt.arg(tablename));    while (i.isActive() && i.next()) {        if (i.value(2).toString() == QLatin1String("PRIMARY")) {            idx.append(fil.field(i.value(4).toString()));            idx.setCursorName(i.value(0).toString());            idx.setName(i.value(2).toString());        }    }    d->preparedQuerys = prepQ;    return idx;}QSqlRecord QMYSQLDriver::record(const QString& tablename) const{    QSqlRecord info;    if (!isOpen())        return info;    MYSQL_RES* r = mysql_list_fields(d->mysql, tablename.toLocal8Bit().constData(), 0);    if (!r) {        return info;    }    MYSQL_FIELD* field;    while ((field = mysql_fetch_field(r)))        info.append(qToField(field, d->tc));    mysql_free_result(r);    return info;}QVariant QMYSQLDriver::handle() const{    return qVariantFromValue(d->mysql);}bool QMYSQLDriver::beginTransaction(){#ifndef CLIENT_TRANSACTIONS    return false;#endif    if (!isOpen()) {        qWarning("QMYSQLDriver::beginTransaction: Database not open");        return false;    }    if (mysql_query(d->mysql, "BEGIN WORK")) {        setLastError(qMakeError(tr("Unable to begin transaction"),                                QSqlError::StatementError, d));        return false;    }    return true;}bool QMYSQLDriver::commitTransaction(){#ifndef CLIENT_TRANSACTIONS    return false;#endif    if (!isOpen()) {        qWarning("QMYSQLDriver::commitTransaction: Database not open");        return false;    }    if (mysql_query(d->mysql, "COMMIT")) {        setLastError(qMakeError(tr("Unable to commit transaction"),                                QSqlError::StatementError, d));        return false;    }    return true;}bool QMYSQLDriver::rollbackTransaction(){#ifndef CLIENT_TRANSACTIONS    return false;#endif    if (!isOpen()) {        qWarning("QMYSQLDriver::rollbackTransaction: Database not open");        return false;    }    if (mysql_query(d->mysql, "ROLLBACK")) {        setLastError(qMakeError(tr("Unable to rollback transaction"),                                QSqlError::StatementError, d));        return false;    }    return true;}QString QMYSQLDriver::formatValue(const QSqlField &field, bool trimStrings) const{    QString r;    if (field.isNull()) {        r = QLatin1String("NULL");    } else {        switch(field.type()) {        case QVariant::String:            // Escape '\' characters            r = QSqlDriver::formatValue(field, trimStrings);            r.replace(QLatin1String("\\"), QLatin1String("\\\\"));            break;        case QVariant::ByteArray:            if (isOpen()) {                const QByteArray ba = field.value().toByteArray();                // buffer has to be at least length*2+1 bytes                char* buffer = new char[ba.size() * 2 + 1];                int escapedSize = int(mysql_real_escape_string(d->mysql, buffer,                                      ba.data(), ba.size()));                r.reserve(escapedSize + 3);                r.append(QLatin1Char('\'')).append(toUnicode(d->tc, buffer)).append(QLatin1Char('\''));                delete[] buffer;                break;            } else {                qWarning("QMYSQLDriver::formatValue: Database not open");            }            // fall through        default:            r = QSqlDriver::formatValue(field, trimStrings);        }    }    return r;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久亚洲午夜电影| 91精品国产91综合久久蜜臀| 国产精品性做久久久久久| 久久精品国产秦先生| 日韩av一区二区三区| 日本美女一区二区三区| 免费在线看成人av| 韩国精品在线观看| 成人av动漫在线| 欧美性欧美巨大黑白大战| 欧美无砖砖区免费| 欧美大胆人体bbbb| 国产日韩欧美精品在线| 中文字幕欧美一| 午夜精品视频在线观看| 五月天亚洲精品| 国产精品一区一区| 91亚洲精华国产精华精华液| 欧美军同video69gay| 日韩一区二区三区免费看 | 在线亚洲一区二区| 91美女视频网站| 欧美精品v国产精品v日韩精品| 91精品国产福利| 国产欧美久久久精品影院| 亚洲美女屁股眼交3| 欧美aaaaaa午夜精品| 国产盗摄精品一区二区三区在线| 不卡视频一二三| 欧美一级国产精品| 国产精品色噜噜| 日本视频在线一区| 成人av综合一区| 91精品国产黑色紧身裤美女| 国产日韩精品一区二区三区在线| 亚洲免费在线视频| 狠狠色综合色综合网络| 色一区在线观看| 亚洲精品一线二线三线| 一区二区三区电影在线播| 国产一区二区不卡在线| 91成人免费电影| 亚洲国产精品黑人久久久| 亚洲成人免费电影| 91色.com| 国产日韩欧美电影| 激情五月婷婷综合网| 在线免费av一区| 国产精品福利一区二区| 国产一区视频在线看| 欧美精品日日鲁夜夜添| 国产精品成人免费| 久久精品国产99国产| 精品污污网站免费看| 亚洲人成7777| bt欧美亚洲午夜电影天堂| 久久精品人人爽人人爽| 免费成人在线网站| 欧美日韩在线精品一区二区三区激情 | 国产一区二区三区国产| 欧美日韩在线不卡| 亚洲综合色成人| 91视视频在线直接观看在线看网页在线看| 欧美xfplay| 久久99精品一区二区三区三区| 欧美日韩一区二区三区免费看| 亚洲欧美在线aaa| av电影天堂一区二区在线| 亚洲国产精品t66y| 不卡一二三区首页| 亚洲欧洲三级电影| 99久久99久久精品免费看蜜桃| 国产三级三级三级精品8ⅰ区| 久草热8精品视频在线观看| 日韩欧美一二区| 国内精品伊人久久久久av一坑| 欧美一区二区黄| 国产呦萝稀缺另类资源| 久久免费午夜影院| 国产91精品精华液一区二区三区| 欧美激情一区在线观看| 成人高清免费观看| 亚洲精品久久久久久国产精华液| 色偷偷88欧美精品久久久| 亚洲最快最全在线视频| 欧美日韩电影一区| 美女脱光内衣内裤视频久久影院| 日韩欧美成人午夜| 国产mv日韩mv欧美| 亚洲色图视频免费播放| 欧美午夜宅男影院| 免费成人在线观看| 国产精品日日摸夜夜摸av| 一本大道综合伊人精品热热| 亚洲福利一区二区三区| 欧美大片在线观看| 丰满白嫩尤物一区二区| 亚洲香肠在线观看| 亚洲精品一区二区精华| 91香蕉国产在线观看软件| 性欧美疯狂xxxxbbbb| 欧美精品一区在线观看| 日本精品视频一区二区| 亚洲第一电影网| 亚洲国产精品99久久久久久久久 | 精品国产一区二区精华| 成人免费观看男女羞羞视频| 亚洲中国最大av网站| 久久久久久久久久久久久夜| 一本到三区不卡视频| 国产一区二区看久久| 亚洲精品久久久蜜桃| 精品国产a毛片| 欧美色网站导航| 国产黄人亚洲片| 日韩国产成人精品| 亚洲欧美日本在线| 国产婷婷色一区二区三区在线| 欧美日韩视频第一区| 97超碰欧美中文字幕| 精品制服美女久久| 婷婷久久综合九色综合伊人色| 中文一区二区在线观看| 精品日产卡一卡二卡麻豆| 欧美日韩免费观看一区二区三区| 国产一区二区不卡在线| 蜜臀av一区二区三区| 一区二区三区日韩欧美| 亚洲欧洲精品一区二区精品久久久| 51精品久久久久久久蜜臀| 91黄色激情网站| 波多野结衣一区二区三区| 国产一区二区中文字幕| 卡一卡二国产精品| 性做久久久久久| 亚洲第一福利一区| 亚洲h精品动漫在线观看| 一区二区三区四区av| 国产精品理论片| 中日韩免费视频中文字幕| 久久网站最新地址| 2欧美一区二区三区在线观看视频| 欧美日韩你懂得| 欧美情侣在线播放| 欧亚一区二区三区| 欧美日韩视频第一区| 国产欧美日韩另类视频免费观看| 欧美日韩亚洲丝袜制服| 国产 欧美在线| 国产伦精品一区二区三区视频青涩 | eeuss鲁片一区二区三区在线看| 日本高清不卡一区| 日韩精品一区二区三区swag| 一区二区中文视频| 蜜臀精品一区二区三区在线观看| 国产成人精品免费视频网站| 欧美三级视频在线播放| 中文字幕国产一区二区| 日本色综合中文字幕| 色综合中文字幕| 精品成a人在线观看| 一区二区三区在线播放| 国产91高潮流白浆在线麻豆| 欧美高清精品3d| 亚洲欧美日韩一区二区三区在线观看 | 成人黄色小视频在线观看| 在线综合亚洲欧美在线视频| 中文字幕日韩精品一区| 国产一区二区影院| 欧美一区二区三区影视| 亚洲精品日产精品乱码不卡| 国产精品一区二区在线播放| 91精品午夜视频| 亚洲资源中文字幕| 99久久精品一区| 国产三级精品视频| 激情综合网最新| 在线成人av影院| 亚洲国产欧美在线人成| 99久久精品99国产精品| 国产亚洲欧洲997久久综合| 热久久免费视频| 欧美剧情电影在线观看完整版免费励志电影| 中文av一区二区| 成人禁用看黄a在线| 久久精品欧美一区二区三区不卡| 久久精品久久久精品美女| 91精品国产综合久久精品| 亚洲国产日韩一区二区| 欧美制服丝袜第一页| 亚洲制服丝袜av| 在线影院国内精品| 亚洲午夜一二三区视频| 日本精品视频一区二区三区| 亚洲日本va在线观看| 99riav久久精品riav| 亚洲啪啪综合av一区二区三区| 91同城在线观看| 亚洲精品国产精品乱码不99| 色94色欧美sute亚洲线路一久|