QSqlIndex SqliteDriver::primaryIndex2(const QString &tblname) const { QSqlRecordInfo rec(recordInfo(tblname)); // expensive :( if (!isOpen() || !dataBase_) return QSqlIndex(); QSqlQuery q = createQuery(); q.setForwardOnly(TRUE); // finrst find a UNIQUE INDEX q.exec("PRAGMA index_list('" + tblname + "');"); QString indexname; while (q.next()) { if (q.value(2).toInt() == 1) { indexname = q.value(1).toString(); break; } } if (indexname.isEmpty()) return QSqlIndex(); q.exec("PRAGMA index_info('" + indexname + "');"); QSqlIndex index(tblname, indexname); while (q.next()) { QString name = q.value(2).toString(); QSqlVariant::Type type = QSqlVariant::Invalid; if (rec.contains(name)) type = rec.find(name).type(); index.append(QSqlField(name, type)); } return index; }
QSqlRecord SqliteDriver::record2(const QString &tblname) const { if (!isOpen() || !dataBase_) return QSqlRecord(); return recordInfo(tblname).toRecord(); }
QSqlRecord QSQLiteDriver::record(const QString &tblname) const { if (!isOpen()) return QSqlRecord(); return recordInfo(tblname).toRecord(); }
QSqlRecordInfo SqliteDriver::recordInfo2(const QString &tbl) const { if (!isOpen() || !dataBase_) return QSqlRecordInfo(); QSqlQuery q = createQuery(); q.setForwardOnly(TRUE); q.exec("SELECT * FROM " + tbl + " LIMIT 1"); return recordInfo(q); }