本文整理汇总了C++中QSqlIndex::count方法的典型用法代码示例。如果您正苦于以下问题:C++ QSqlIndex::count方法的具体用法?C++ QSqlIndex::count怎么用?C++ QSqlIndex::count使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QSqlIndex
的用法示例。
在下文中一共展示了QSqlIndex::count方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: primaryIndex
void tst_QSqlDriver::primaryIndex()
{
QFETCH_GLOBAL(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
QString tablename(qTableName("relTEST1", __FILE__));
//check that we can get primary index using unquoted mixed case table name
QSqlIndex index = db.driver()->primaryIndex(tablename);
QCOMPARE(index.count(), 1);
if( db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2"))
QCOMPARE(index.fieldName(0), QString::fromLatin1("ID"));
else
QCOMPARE(index.fieldName(0), QString::fromLatin1("id"));
//check that we can get the primary index using a quoted tablename
if( db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2"))
tablename = tablename.toUpper();
else if (db.driverName().startsWith("QPSQL"))
tablename = tablename.toLower();
if(!db.driverName().startsWith("QODBC") && !db.databaseName().contains("PostgreSql")) {
index = db.driver()->primaryIndex(db.driver()->escapeIdentifier(tablename, QSqlDriver::TableName));
QCOMPARE(index.count(), 1);
}
if( db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2"))
QCOMPARE(index.fieldName(0), QString::fromLatin1("ID"));
else
QCOMPARE(index.fieldName(0), QString::fromLatin1("id"));
//check that we can not get the primary index using a quoted but incorrect table name casing
if( db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2"))
tablename = tablename.toLower();
else if (db.driverName().startsWith("QPSQL"))
tablename = tablename.toUpper();
index = db.driver()->primaryIndex(db.driver()->escapeIdentifier(tablename, QSqlDriver::TableName));
if (tst_Databases::isMySQL(db)
|| db.driverName().startsWith("QSQLITE")
|| db.driverName().startsWith("QTDS")
|| tst_Databases::isSqlServer(db)
|| tst_Databases::isMSAccess(db))
QCOMPARE(index.count(), 1); //mysql will always find the table name regardless of casing
else
QCOMPARE(index.count(), 0);
}
示例2: qOrderByClause
QString qOrderByClause( const QSqlIndex & i, const QString& prefix = QString::null )
{
QString str;
int k = i.count();
if( k == 0 ) return QString::null;
str = " order by " + i.toString( prefix );
return str;
}
示例3: qOrderByClause
QString qOrderByClause(const QSqlIndex & i, const QString& prefix = QString())
{
QString str;
int k = i.count();
if(k == 0)
return QString();
str = QLatin1String(" order by ") + i.toString(prefix);
return str;
}
示例4: getPrimary
QString getPrimary(QSqlDatabase &db, QString sTable)
{
QString sPrimary = "kbrecordid";
QSqlIndex i = db.driver()->primaryIndex(sTable);
if (i.count()){
sPrimary = i.fieldName(0);
}
return sPrimary;
}
示例5: index_matches
static bool index_matches(const Q3SqlCursor* cur, const QSqlRecord* buf,
const QSqlIndex& idx)
{
bool indexEquals = false;
for (int i = 0; i < idx.count(); ++i) {
const QString fn(idx.field(i).name());
if (cur->value(fn) == buf->value(fn))
indexEquals = true;
else {
indexEquals = false;
break;
}
}
return indexEquals;
}
示例6: fieldList
bool Q3SqlCursor::select(const QString & filter, const QSqlIndex & sort)
{
QString fieldList(toString(d->nm));
if (fieldList.isEmpty())
return false;
QString str(QLatin1String("select ") + fieldList);
str += QLatin1String(" from ") + d->nm;
if (!filter.isEmpty()) {
d->ftr = filter;
str += QLatin1String(" where ") + filter;
} else
d->ftr.clear();
if (sort.count() > 0)
str += QLatin1String(" order by ") + sort.toString(d->nm);
d->srt = sort;
return exec(str);
}
示例7: select
bool QSqlCursor::select( const QString & filter, const QSqlIndex & sort )
{
QString fieldList = toString( d->nm );
if ( fieldList.isEmpty() )
return FALSE;
QString str= "select " + fieldList;
str += " from " + d->nm;
if ( !filter.isEmpty() ) {
d->ftr = filter;
str += " where " + filter;
} else
d->ftr = QString::null;
if ( sort.count() > 0 )
str += " order by " + sort.toString( d->nm );
d->srt = sort;
return exec( str );
}
示例8: toString
QString Q3SqlCursor::toString(const QSqlIndex& i, QSqlRecord* rec, const QString& prefix,
const QString& fieldSep, const QString& sep) const
{
QString filter;
bool separator = false;
for(int j = 0; j < i.count(); ++j){
if (rec->isGenerated(j)) {
if(separator) {
filter += QLatin1Char(' ') + sep + QLatin1Char(' ') ;
}
QString fn = i.fieldName(j);
QSqlField f = rec->field(fn);
filter += toString(prefix, &f, fieldSep);
separator = true;
}
}
return filter;
}
示例9: toString
QString QSqlCursor::toString( const QSqlIndex& i, QSqlRecord* rec, const QString& prefix,
const QString& fieldSep, const QString& sep ) const
{
QString filter;
bool separator = FALSE;
for( uint j = 0; j < i.count(); ++j ){
if ( rec->isGenerated( j ) ) {
if( separator ) {
filter += " " + sep + " " ;
}
QString fn = i.fieldName( j );
QSqlField* f = rec->field( fn );
filter += toString( prefix, f, fieldSep );
separator = TRUE;
}
}
return filter;
}
示例10: qDebug
//## possibly add sizeHint parameter
bool Q3SqlCursorManager::findBuffer(const QSqlIndex& idx, int atHint)
{
#ifdef QT_DEBUG_DATAMANAGER
qDebug("Q3SqlCursorManager::findBuffer:");
#endif
Q3SqlCursor* cur = cursor();
if (!cur)
return false;
if (!cur->isActive())
return false;
if (!idx.count()) {
if (cur->at() == QSql::BeforeFirst)
cur->next();
return false;
}
QSqlRecord* buf = cur->editBuffer();
bool indexEquals = false;
#ifdef QT_DEBUG_DATAMANAGER
qDebug(" Checking hint...");
#endif
/* check the hint */
if (cur->seek(atHint))
indexEquals = index_matches(cur, buf, idx);
if (!indexEquals) {
#ifdef QT_DEBUG_DATAMANAGER
qDebug(" Checking current page...");
#endif
/* check current page */
int pageSize = 20;
int startIdx = qMax(atHint - pageSize, 0);
int endIdx = atHint + pageSize;
for (int j = startIdx; j <= endIdx; ++j) {
if (cur->seek(j)) {
indexEquals = index_matches(cur, buf, idx);
if (indexEquals)
break;
}
}
}
if (!indexEquals && cur->driver()->hasFeature(QSqlDriver::QuerySize)
&& cur->sort().count()) {
#ifdef QT_DEBUG_DATAMANAGER
qDebug(" Using binary search...");
#endif
// binary search based on record buffer and current sort fields
int lo = 0;
int hi = cur->size();
int mid;
if (compare_recs(buf, cur, cur->sort()) >= 0)
lo = cur->at();
while (lo != hi) {
mid = lo + (hi - lo) / 2;
if (!cur->seek(mid))
break;
if (index_matches(cur, buf, idx)) {
indexEquals = true;
break;
}
int c = compare_recs(buf, cur, cur->sort());
if (c < 0) {
hi = mid;
} else if (c == 0) {
// found it, but there may be duplicates
int at = mid;
do {
mid--;
if (!cur->seek(mid))
break;
if (index_matches(cur, buf, idx)) {
indexEquals = true;
break;
}
} while (compare_recs(buf, cur, cur->sort()) == 0);
if (!indexEquals) {
mid = at;
do {
mid++;
if (!cur->seek(mid))
break;
if (index_matches(cur, buf, idx)) {
indexEquals = true;
break;
}
} while (compare_recs(buf, cur, cur->sort()) == 0);
}
break;
} else if (c > 0) {
lo = mid + 1;
}
}
}
if (!indexEquals) {
#ifdef QT_DEBUG_DATAMANAGER
qDebug(" Using brute search...");
#endif
//.........这里部分代码省略.........
示例11: QStringLiteral
bool QgsDb2GeometryColumns::populateLayerProperty( QgsDb2LayerProperty &layer )
{
if ( !mQuery.isActive() || !mQuery.next() )
{
return false;
}
layer.schemaName = mQuery.value( 0 ).toString().trimmed();
layer.tableName = mQuery.value( 1 ).toString().trimmed();
layer.geometryColName = mQuery.value( 2 ).toString().trimmed();
layer.type = mQuery.value( 3 ).toString();
if ( mQuery.value( 4 ).isNull() )
{
layer.srid.clear();
layer.srsName.clear();
}
else
{
layer.srid = mQuery.value( 4 ).toString();
layer.srsName = mQuery.value( 5 ).toString();
}
layer.extents = QStringLiteral( "0 0 0 0" ); // no extents
if ( ENV_LUW == mEnvironment )
{
if ( !mQuery.value( 6 ).isNull() ) // Don't get values if null
{
layer.extents = QString(
mQuery.value( 6 ).toString() + ' ' +
mQuery.value( 7 ).toString() + ' ' +
mQuery.value( 8 ).toString() + ' ' +
mQuery.value( 9 ).toString() ).trimmed();
}
}
QgsDebugMsg( QStringLiteral( "layer: %1.%2(%3) type='%4' srid='%5' srsName='%6'" )
.arg( layer.schemaName, layer.tableName, layer.geometryColName,
layer.type, layer.srid, layer.srsName ) );
QgsDebugMsg( "Extents: '" + layer.extents + "'" );
layer.pkCols = QStringList();
// Use the Qt functionality to get the primary key information
// to set the FID column.
// We can only use the primary key if it only has one column and
// the type is Integer or BigInt.
QString table = QStringLiteral( "%1.%2" ).arg( layer.schemaName, layer.tableName );
QSqlIndex pk = mDatabase.primaryIndex( table );
if ( pk.count() == 1 )
{
QSqlField pkFld = pk.field( 0 );
QVariant::Type pkType = pkFld.type();
if ( ( pkType == QVariant::Int || pkType == QVariant::LongLong ) )
{
QString fidColName = pk.fieldName( 0 );
layer.pkCols.append( fidColName );
QgsDebugMsg( "pk is: " + fidColName );
}
}
else
{
QgsDebugMsg( "Warning: table primary key count is " + QString::number( pk.count() ) );
}
layer.pkColumnName = layer.pkCols.size() > 0 ? layer.pkCols.at( 0 ) : QString();
return true;
}