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

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

?? qsql_psql.cpp

?? QT 開發環境里面一個很重要的文件
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
    if (conn) {        d->pro = getPSQLVersion(d->connection);        setOpen(true);        setOpenError(false);    }}void QPSQLDriver::init(){    d = new QPSQLDriverPrivate();}QPSQLDriver::~QPSQLDriver(){    if (d->connection)        PQfinish(d->connection);    delete d;}QVariant QPSQLDriver::handle() const{    return qVariantFromValue(d->connection);}bool QPSQLDriver::hasFeature(DriverFeature f) const{    switch (f) {    case Transactions:    case QuerySize:    case LastInsertId:        return true;    case BatchOperations:    case PreparedQueries:    case NamedPlaceholders:    case PositionalPlaceholders:        return false;    case BLOB:        return d->pro >= QPSQLDriver::Version71;    case Unicode:        return d->isUtf8;    }    return false;}/*   Quote a string for inclusion into the connection string   \ -> \\   ' -> \'   surround string by single quotes */static QString qQuote(QString s){    s.replace(QLatin1Char('\\'), QLatin1String("\\\\"));    s.replace(QLatin1Char('\''), QLatin1String("\\'"));    s.append(QLatin1Char('\'')).prepend(QLatin1Char('\''));    return s;}bool QPSQLDriver::open(const QString & db,                        const QString & user,                        const QString & password,                        const QString & host,                        int port,                        const QString& connOpts){    if (isOpen())        close();    QString connectString;    if (!host.isEmpty())        connectString.append(QLatin1String("host=")).append(qQuote(host));    if (!db.isEmpty())        connectString.append(QLatin1String(" dbname=")).append(qQuote(db));    if (!user.isEmpty())        connectString.append(QLatin1String(" user=")).append(qQuote(user));    if (!password.isEmpty())        connectString.append(QLatin1String(" password=")).append(qQuote(password));    if (port != -1)        connectString.append(QLatin1String(" port=")).append(qQuote(QString::number(port)));    // add any connect options - the server will handle error detection    if (!connOpts.isEmpty()) {        QString opt = connOpts;        opt.replace(QLatin1Char(';'), QLatin1Char(' '), Qt::CaseInsensitive);        connectString.append(QLatin1Char(' ')).append(opt);    }    d->connection = PQconnectdb(connectString.toLocal8Bit().constData());    if (PQstatus(d->connection) == CONNECTION_BAD) {        setLastError(qMakeError(tr("Unable to connect"), QSqlError::ConnectionError, d));        setOpenError(true);        return false;    }    d->pro = getPSQLVersion(d->connection);    d->isUtf8 = setEncodingUtf8(d->connection);    setDatestyle(d->connection);    setOpen(true);    setOpenError(false);    return true;}void QPSQLDriver::close(){    if (isOpen()) {        if (d->connection)            PQfinish(d->connection);        d->connection = 0;        setOpen(false);        setOpenError(false);    }}QSqlResult *QPSQLDriver::createResult() const{    return new QPSQLResult(this, d);}bool QPSQLDriver::beginTransaction(){    if (!isOpen()) {        qWarning("QPSQLDriver::beginTransaction: Database not open");        return false;    }    PGresult* res = PQexec(d->connection, "BEGIN");    if (!res || PQresultStatus(res) != PGRES_COMMAND_OK) {        PQclear(res);        setLastError(qMakeError(tr("Could not begin transaction"),                                QSqlError::TransactionError, d));        return false;    }    PQclear(res);    return true;}bool QPSQLDriver::commitTransaction(){    if (!isOpen()) {        qWarning("QPSQLDriver::commitTransaction: Database not open");        return false;    }    PGresult* res = PQexec(d->connection, "COMMIT");    if (!res || PQresultStatus(res) != PGRES_COMMAND_OK) {        PQclear(res);        setLastError(qMakeError(tr("Could not commit transaction"),                                QSqlError::TransactionError, d));        return false;    }    PQclear(res);    return true;}bool QPSQLDriver::rollbackTransaction(){    if (!isOpen()) {        qWarning("QPSQLDriver::rollbackTransaction: Database not open");        return false;    }    PGresult* res = PQexec(d->connection, "ROLLBACK");    if (!res || PQresultStatus(res) != PGRES_COMMAND_OK) {        setLastError(qMakeError(tr("Could not rollback transaction"),                                QSqlError::TransactionError, d));        PQclear(res);        return false;    }    PQclear(res);    return true;}QStringList QPSQLDriver::tables(QSql::TableType type) const{    QStringList tl;    if (!isOpen())        return tl;    QSqlQuery t(createResult());    t.setForwardOnly(true);    if (type & QSql::Tables)        d->appendTables(tl, t, QLatin1Char('r'));    if (type & QSql::Views)        d->appendTables(tl, t, QLatin1Char('v'));    if (type & QSql::SystemTables) {        t.exec(QLatin1String("select relname from pg_class where (relkind = 'r') "                "and (relname like 'pg_%') "));        while (t.next())            tl.append(t.value(0).toString());    }    return tl;}static void qSplitTableName(QString &tablename, QString &schema){    int dot = tablename.indexOf(QLatin1Char('.'));    if (dot == -1)        return;    schema = tablename.left(dot);    tablename = tablename.mid(dot + 1);}QSqlIndex QPSQLDriver::primaryIndex(const QString& tablename) const{    QSqlIndex idx(tablename);    if (!isOpen())        return idx;    QSqlQuery i(createResult());    QString stmt;    QString tbl = tablename;    QString schema;    qSplitTableName(tbl, schema);    switch(d->pro) {    case QPSQLDriver::Version6:        stmt = QLatin1String("select pg_att1.attname, int(pg_att1.atttypid), pg_cl.relname "                "from pg_attribute pg_att1, pg_attribute pg_att2, pg_class pg_cl, pg_index pg_ind "                "where lower(pg_cl.relname) = '%1_pkey' "                "and pg_cl.oid = pg_ind.indexrelid "                "and pg_att2.attrelid = pg_ind.indexrelid "                "and pg_att1.attrelid = pg_ind.indrelid "                "and pg_att1.attnum = pg_ind.indkey[pg_att2.attnum-1] "                "order by pg_att2.attnum");        break;    case QPSQLDriver::Version7:    case QPSQLDriver::Version71:        stmt = QLatin1String("select pg_att1.attname, pg_att1.atttypid::int, pg_cl.relname "                "from pg_attribute pg_att1, pg_attribute pg_att2, pg_class pg_cl, pg_index pg_ind "                "where lower(pg_cl.relname) = '%1_pkey' "                "and pg_cl.oid = pg_ind.indexrelid "                "and pg_att2.attrelid = pg_ind.indexrelid "                "and pg_att1.attrelid = pg_ind.indrelid "                "and pg_att1.attnum = pg_ind.indkey[pg_att2.attnum-1] "                "order by pg_att2.attnum");        break;    case QPSQLDriver::Version73:        stmt = QLatin1String("SELECT pg_attribute.attname, pg_attribute.atttypid::int, "                "pg_class.relname "                "FROM pg_attribute, pg_class "                "WHERE %1 pg_class.oid = "                "(SELECT indexrelid FROM pg_index WHERE indisprimary = true AND indrelid = "                " (SELECT oid FROM pg_class WHERE lower(relname) = '%2')) "                "AND pg_attribute.attrelid = pg_class.oid "                "AND pg_attribute.attisdropped = false "                "ORDER BY pg_attribute.attnum");        if (schema.isEmpty())            stmt = stmt.arg(QLatin1String("pg_table_is_visible(pg_class.oid) AND"));        else            stmt = stmt.arg(QString::fromLatin1("pg_class.relnamespace = (select oid from "                   "pg_namespace where pg_namespace.nspname = '%1') AND ").arg(schema.toLower()));        break;    }    i.exec(stmt.arg(tbl.toLower()));    while (i.isActive() && i.next()) {        QSqlField f(i.value(0).toString(), qDecodePSQLType(i.value(1).toInt()));        idx.append(f);        idx.setName(i.value(2).toString());    }    return idx;}QSqlRecord QPSQLDriver::record(const QString& tablename) const{    QSqlRecord info;    if (!isOpen())        return info;    QString tbl = tablename;    QString schema;    qSplitTableName(tbl, schema);    QString stmt;    switch(d->pro) {    case QPSQLDriver::Version6:        stmt = QLatin1String("select pg_attribute.attname, int(pg_attribute.atttypid), "                "pg_attribute.attnotnull, pg_attribute.attlen, pg_attribute.atttypmod, "                "int(pg_attribute.attrelid), pg_attribute.attnum "                "from pg_class, pg_attribute "                "where lower(pg_class.relname) = '%1' "                "and pg_attribute.attnum > 0 "                "and pg_attribute.attrelid = pg_class.oid ");        break;    case QPSQLDriver::Version7:        stmt = QLatin1String("select pg_attribute.attname, pg_attribute.atttypid::int, "                "pg_attribute.attnotnull, pg_attribute.attlen, pg_attribute.atttypmod, "                "pg_attribute.attrelid::int, pg_attribute.attnum "                "from pg_class, pg_attribute "                "where lower(pg_class.relname) = '%1' "                "and pg_attribute.attnum > 0 "                "and pg_attribute.attrelid = pg_class.oid ");        break;    case QPSQLDriver::Version71:        stmt = QLatin1String("select pg_attribute.attname, pg_attribute.atttypid::int, "                "pg_attribute.attnotnull, pg_attribute.attlen, pg_attribute.atttypmod, "                "pg_attrdef.adsrc "                "from pg_class, pg_attribute "                "left join pg_attrdef on (pg_attrdef.adrelid = "                "pg_attribute.attrelid and pg_attrdef.adnum = pg_attribute.attnum) "                "where lower(pg_class.relname) = '%1' "                "and pg_attribute.attnum > 0 "                "and pg_attribute.attrelid = pg_class.oid "                "order by pg_attribute.attnum ");        break;    case QPSQLDriver::Version73:        stmt = QLatin1String("select pg_attribute.attname, pg_attribute.atttypid::int, "                "pg_attribute.attnotnull, pg_attribute.attlen, pg_attribute.atttypmod, "                "pg_attrdef.adsrc "                "from pg_class, pg_attribute "                "left join pg_attrdef on (pg_attrdef.adrelid = "                "pg_attribute.attrelid and pg_attrdef.adnum = pg_attribute.attnum) "                "where %1 "                "and lower(pg_class.relname) = '%2' "                "and pg_attribute.attnum > 0 "                "and pg_attribute.attrelid = pg_class.oid "                "and pg_attribute.attisdropped = false "                "order by pg_attribute.attnum ");        if (schema.isEmpty())            stmt = stmt.arg(QLatin1String("pg_table_is_visible(pg_class.oid)"));        else            stmt = stmt.arg(QString::fromLatin1("pg_class.relnamespace = (select oid from "                   "pg_namespace where pg_namespace.nspname = '%1')").arg(schema.toLower()));        break;    }    QSqlQuery query(createResult());    query.exec(stmt.arg(tbl.toLower()));    if (d->pro >= QPSQLDriver::Version71) {        while (query.next()) {            int len = query.value(3).toInt();            int precision = query.value(4).toInt();            // swap length and precision if length == -1            if (len == -1 && precision > -1) {                len = precision - 4;                precision = -1;            }            QString defVal = query.value(5).toString();            if (!defVal.isEmpty() && defVal.at(0) == QLatin1Char('\''))                defVal = defVal.mid(1, defVal.length() - 2);            QSqlField f(query.value(0).toString(), qDecodePSQLType(query.value(1).toInt()));            f.setRequired(query.value(2).toBool());            f.setLength(len);            f.setPrecision(precision);            f.setDefaultValue(defVal);            f.setSqlType(query.value(1).toInt());            info.append(f);        }    } else {        // Postgres < 7.1 cannot handle outer joins        while (query.next()) {            QString defVal;            QString stmt2 = QLatin1String("select pg_attrdef.adsrc from pg_attrdef where "                            "pg_attrdef.adrelid = %1 and pg_attrdef.adnum = %2 ");            QSqlQuery query2(createResult());            query2.exec(stmt2.arg(query.value(5).toInt()).arg(query.value(6).toInt()));            if (query2.isActive() && query2.next())                defVal = query2.value(0).toString();            if (!defVal.isEmpty() && defVal.at(0) == QLatin1Char('\''))                defVal = defVal.mid(1, defVal.length() - 2);            int len = query.value(3).toInt();            int precision = query.value(4).toInt();            // swap length and precision if length == -1            if (len == -1 && precision > -1) {                len = precision - 4;                precision = -1;            }            QSqlField f(query.value(0).toString(), qDecodePSQLType(query.value(1).toInt()));            f.setRequired(query.value(2).toBool());            f.setLength(len);            f.setPrecision(precision);            f.setDefaultValue(defVal);            f.setSqlType(query.value(1).toInt());            info.append(f);        }    }    return info;}QString QPSQLDriver::formatValue(const QSqlField &field,                                  bool) const{    QString r;    if (field.isNull()) {        r = QLatin1String("NULL");    } else {        switch (field.type()) {        case QVariant::DateTime:#ifndef QT_NO_DATESTRING            if (field.value().toDateTime().isValid()) {                QDate dt = field.value().toDateTime().date();                QTime tm = field.value().toDateTime().time();                // msecs need to be right aligned otherwise psql                // interpretes them wrong                r = QLatin1String("'") + QString::number(dt.year()) + QLatin1String("-")                          + QString::number(dt.month()) + QLatin1String("-")                          + QString::number(dt.day()) + QLatin1String(" ")                          + tm.toString() + QLatin1String(".")                          + QString::number(tm.msec()).rightJustified(3, QLatin1Char('0'))                          + QLatin1String("'");            } else#else            {                r = QLatin1String("NULL");            }#endif // QT_NO_DATESTRING            break;        case QVariant::Time:#ifndef QT_NO_DATESTRING            if (field.value().toTime().isValid()) {                r = field.value().toTime().toString(Qt::ISODate);            } else#endif            {                r = QLatin1String("NULL");            }        case QVariant::String:        {            // Escape '\' characters            r = QSqlDriver::formatValue(field);            r.replace(QLatin1String("\\"), QLatin1String("\\\\"));            break;        }        case QVariant::Bool:            if (field.value().toBool())                r = QLatin1String("TRUE");            else                r = QLatin1String("FALSE");            break;        case QVariant::ByteArray: {            QByteArray ba(field.value().toByteArray());            size_t len;            unsigned char *data = PQescapeBytea((unsigned char*)ba.constData(), ba.size(), &len);            r += QLatin1Char('\'');            r += QLatin1String((const char*)data);            r += QLatin1Char('\'');            qPQfreemem(data);            break;        }        default:            r = QSqlDriver::formatValue(field);            break;        }    }    return r;}QString QPSQLDriver::escapeIdentifier(const QString &identifier, IdentifierType) const{    QString res = identifier;    res.replace(QLatin1Char('"'), QLatin1String("\"\""));    res.prepend(QLatin1Char('"')).append(QLatin1Char('"'));    res.replace(QLatin1Char('.'), QLatin1String("\".\""));    return res;}bool QPSQLDriver::isOpen() const{    return PQstatus(d->connection) == CONNECTION_OK;}QPSQLDriver::Protocol QPSQLDriver::protocol() const{    return d->pro;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩亚洲欧美成人一区| 欧美成人r级一区二区三区| 中文字幕日韩欧美一区二区三区| 亚洲精品五月天| 91麻豆精品国产自产在线 | 日韩成人免费在线| 精品国产亚洲在线| 99久久久无码国产精品| 亚洲图片欧美综合| 国产精品天干天干在观线| 欧美日韩在线观看一区二区| 精品一区二区三区视频 | 国产精品视频免费| 欧美精品久久天天躁| 91老司机福利 在线| 国产精品一线二线三线| 丝袜美腿亚洲综合| 亚洲一区欧美一区| 亚洲免费在线电影| 国产精品不卡一区| 国产日本亚洲高清| 久久久综合网站| 中文字幕国产一区二区| 久久综合中文字幕| 久久精品在线免费观看| 欧美精品一区二区三区四区| 欧美妇女性影城| 91精品国产综合久久久久久久久久| 丁香婷婷深情五月亚洲| 成人av综合在线| 成人美女视频在线看| 色综合久久综合中文综合网| 色综合久久久久久久久久久| 色综合视频在线观看| 欧美乱妇23p| 在线成人免费观看| 久久精品视频一区二区| 中文字幕一区二区三| 亚洲小少妇裸体bbw| 日韩不卡在线观看日韩不卡视频| 亚洲美女偷拍久久| 蜜桃视频第一区免费观看| 青青草国产精品97视觉盛宴| 国产成人av一区二区三区在线观看| 精品一区二区av| 91在线看国产| 91成人网在线| 青青草成人在线观看| 麻豆精品视频在线观看免费| 国产一区二区三区在线观看免费 | 日韩高清在线不卡| 国产欧美日韩精品一区| 色综合网站在线| 美女国产一区二区三区| 国产精品久久久久婷婷二区次| av电影在线观看一区| 五月婷婷激情综合网| 久久久99精品免费观看不卡| 色丁香久综合在线久综合在线观看| 亚洲精品久久久久久国产精华液| 欧美视频在线一区二区三区 | 国产98色在线|日韩| 一区二区在线电影| 久久久久久99精品| 精品久久国产字幕高潮| 欧美日韩国产一区| 91国偷自产一区二区开放时间| 亚洲成人自拍一区| 亚洲一二三四区不卡| 亚洲欧美日韩国产综合在线| 亚洲国产精品v| 国产精品伦一区| 中文字幕不卡在线观看| 国产偷v国产偷v亚洲高清| 日韩精品一区二区三区在线观看| 成人av第一页| 成人免费毛片高清视频| 国产 日韩 欧美大片| 国产一二精品视频| 懂色av一区二区三区免费观看| 五月天亚洲精品| 日本成人在线看| 久久精品国产99国产精品| 国产一区福利在线| 成人美女在线观看| 欧美日韩精品电影| 精品国产一区二区三区久久久蜜月| 欧美日韩成人一区二区| 欧美一级午夜免费电影| 国产日韩影视精品| 一区二区三区免费在线观看| 午夜精品久久久久久久久久 | 成人高清av在线| 在线一区二区视频| 精品少妇一区二区三区视频免付费 | 日本欧美一区二区三区乱码| 另类欧美日韩国产在线| 国产成人午夜精品5599| a在线播放不卡| 欧美一二三区在线观看| 中文字幕亚洲一区二区av在线 | 大桥未久av一区二区三区中文| 成人免费看片app下载| 日韩一区二区在线观看视频播放| 日韩欧美在线不卡| 亚洲精品久久7777| 国产99久久久国产精品潘金| 亚洲精品一区二区精华| 亚洲成a天堂v人片| 一本到高清视频免费精品| 国产日韩欧美在线一区| 日韩成人精品在线| 欧美亚州韩日在线看免费版国语版| 欧美一区二区三区不卡| 亚洲三级理论片| 成人国产精品免费| 国产精品乱码一区二区三区软件| 日韩电影免费一区| 欧美日韩成人综合在线一区二区| 国产偷国产偷亚洲高清人白洁| 亚洲成人一区在线| 欧美久久免费观看| 免费xxxx性欧美18vr| 欧美欧美午夜aⅴ在线观看| 午夜一区二区三区视频| 欧美性xxxxx极品少妇| 天天做天天摸天天爽国产一区 | 国产精品电影一区二区三区| 国产一区二区三区蝌蚪| 久久久久久9999| 99精品国产热久久91蜜凸| 亚洲欧美二区三区| 欧美日韩在线精品一区二区三区激情| 久久久综合视频| 色综合久久99| 久久国产精品99久久人人澡| 欧美国产日韩一二三区| 在线观看一区不卡| 国产成人一级电影| 亚洲男同性恋视频| 精品国产乱码久久久久久久| 成人黄色电影在线| 日韩电影在线一区二区| 亚洲国产高清aⅴ视频| 欧美亚洲高清一区二区三区不卡| 亚洲国产精品自拍| 国产无人区一区二区三区| 91电影在线观看| 国产伦精一区二区三区| 亚洲午夜在线电影| 国产欧美日韩精品一区| 欧美二区三区的天堂| 色婷婷综合久久久中文一区二区 | 风间由美一区二区三区在线观看 | 欧美精品第1页| 91老师片黄在线观看| 国产宾馆实践打屁股91| 久久国产精品99久久久久久老狼| 国产精品欧美久久久久无广告| 91在线视频免费观看| 成人精品在线视频观看| 国产九色sp调教91| 久国产精品韩国三级视频| 亚洲成人www| 亚洲成人在线观看视频| 亚洲一区二区三区四区五区黄 | 性久久久久久久久久久久| 亚洲精品乱码久久久久久黑人 | 日韩理论片网站| 亚洲日本成人在线观看| 国产精品久久777777| 久久精品网站免费观看| 成人免费在线播放视频| 国产欧美1区2区3区| 亚洲人吸女人奶水| 亚洲高清免费在线| 亚洲成av人片在www色猫咪| 亚洲成人7777| 捆绑变态av一区二区三区| 韩国欧美国产1区| 国产精品123区| 在线中文字幕不卡| 欧美大片在线观看一区二区| 国产亚洲一本大道中文在线| 欧美激情在线一区二区三区| 亚洲色图欧洲色图| 午夜久久电影网| 国产69精品久久777的优势| 精品在线亚洲视频| 亚洲图片欧美一区| 国产精品18久久久久久久网站| 丝袜亚洲精品中文字幕一区| 国产成人综合亚洲网站| 色偷偷88欧美精品久久久| av午夜一区麻豆| 精品欧美一区二区久久| 欧美国产一区视频在线观看| 偷拍一区二区三区| 成人短视频下载| 欧美大片免费久久精品三p|