QSqlRecord QSQLite2Driver::record(const QString &tbl) const { if (!isOpen()) return QSqlRecord(); QString table = tbl; if (isIdentifierEscaped(tbl, QSqlDriver::TableName)) table = stripDelimiters(table, QSqlDriver::TableName); QSqlQuery q(createResult()); q.setForwardOnly(true); q.exec(QLatin1String("SELECT * FROM ") + tbl + QLatin1String(" LIMIT 1")); return q.record(); }
QSqlRecord QSpatiaLiteDriver::record(const QString &tbl) const { if (!isOpen()) return QSqlRecord(); QString table = tbl; if (isIdentifierEscaped(table, QSqlDriver::TableName)) table = stripDelimiters(table, QSqlDriver::TableName); QSqlQuery q(createResult()); q.setForwardOnly(true); return qGetTableInfo(q, table); }
QSqlIndex QSymSQLDriver::primaryIndex(const QString &tblname) const { if (!isOpen()) return QSqlIndex(); QString table = tblname; if (isIdentifierEscaped(table, QSqlDriver::TableName)) table = stripDelimiters(table, QSqlDriver::TableName); QSqlQuery q(createResult()); q.setForwardOnly(true); return qGetTableInfo(q, table, true); }
QSqlRecord SQLiteDriver::record(const QString &tbl) const { if (!isOpen()) return QSqlRecord(); QString table = tbl; #if (QT_VERSION >= 0x040500) if (isIdentifierEscaped(table, QSqlDriver::TableName)) table = stripDelimiters(table, QSqlDriver::TableName); #endif QSqlQuery q(createResult()); q.setForwardOnly(true); return qGetTableInfo(q, table); }
QSqlRecord QTDSDriver::record(const QString& tablename) const { QSqlRecord info; if (!isOpen()) return info; QSqlQuery t(createResult()); t.setForwardOnly(true); QString table = tablename; if (isIdentifierEscaped(table, QSqlDriver::TableName)) table = stripDelimiters(table, QSqlDriver::TableName); QString stmt (QLatin1String("select name, type, length, prec from syscolumns " "where id = (select id from sysobjects where name = '%1')")); t.exec(stmt.arg(table)); while (t.next()) { QSqlField f(t.value(0).toString().simplified(), qDecodeTDSType(t.value(1).toInt())); f.setLength(t.value(2).toInt()); f.setPrecision(t.value(3).toInt()); f.setSqlType(t.value(1).toInt()); info.append(f); } return info; }
QSqlIndex QSQLite2Driver::primaryIndex(const QString &tblname) const { QSqlRecord rec(record(tblname)); // expensive :( if (!isOpen()) return QSqlIndex(); QSqlQuery q(createResult()); q.setForwardOnly(true); QString table = tblname; if (isIdentifierEscaped(table, QSqlDriver::TableName)) table = stripDelimiters(table, QSqlDriver::TableName); // finrst find a UNIQUE INDEX q.exec(QLatin1String("PRAGMA index_list('") + table + QLatin1String("');")); QString indexname; while(q.next()) { if (q.value(2).toInt()==1) { indexname = q.value(1).toString(); break; } } if (indexname.isEmpty()) return QSqlIndex(); q.exec(QLatin1String("PRAGMA index_info('") + indexname + QLatin1String("');")); QSqlIndex index(table, indexname); while(q.next()) { QString name = q.value(2).toString(); QVariant::Type type = QVariant::Invalid; if (rec.contains(name)) type = rec.field(name).type(); index.append(QSqlField(name, type)); } return index; }