本文整理汇总了C++中QSqlIndex::append方法的典型用法代码示例。如果您正苦于以下问题:C++ QSqlIndex::append方法的具体用法?C++ QSqlIndex::append怎么用?C++ QSqlIndex::append使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QSqlIndex
的用法示例。
在下文中一共展示了QSqlIndex::append方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: qGetTableInfo
static QSqlIndex qGetTableInfo(QSqlQuery &q, const QString &tableName, bool onlyPIndex = false)
{
QString schema;
QString table(tableName);
int indexOfSeparator = tableName.indexOf(QLatin1Char('.'));
if (indexOfSeparator > -1) {
schema = tableName.left(indexOfSeparator).append(QLatin1Char('.'));
table = tableName.mid(indexOfSeparator + 1);
}
q.exec(QLatin1String("PRAGMA ") + schema + QLatin1String("table_info (") + _q_escapeIdentifier(table) + QLatin1String(")"));
QSqlIndex ind;
while (q.next()) {
bool isPk = q.value(5).toInt();
if (onlyPIndex && !isPk)
continue;
QString typeName = q.value(2).toString().toLower();
QSqlField fld(q.value(1).toString(), qGetColumnType(typeName));
if (isPk && (typeName == QLatin1String("integer")))
// INTEGER PRIMARY KEY fields are auto-generated in sqlite
// INT PRIMARY KEY is not the same as INTEGER PRIMARY KEY!
fld.setAutoValue(true);
fld.setRequired(q.value(3).toInt() != 0);
fld.setDefaultValue(q.value(4));
ind.append(fld);
}
return ind;
}
示例2: qGetTableInfo
static QSqlIndex qGetTableInfo(QSqlQuery &q, QString &tableName, bool onlyPIndex = false)
{
QString dbName;
QString table(tableName);
int indexOfSeparator = tableName.indexOf(QLatin1Char('.'));
if (indexOfSeparator > -1) {
dbName = tableName.left(indexOfSeparator +1 );
table = tableName.mid(indexOfSeparator + 1);
}
q.exec(QLatin1String("PRAGMA ") + dbName + QLatin1String("table_info (") + _q_escapeIdentifier(table) + QLatin1String(")"));
const int NAME_IDX = 1;
const int TYPE_IDX = 2;
const int NOTNULL_IDX = 3;
const int DFLT_VALUE_IDX = 4;
const int PK_IDX = 5;
QSqlIndex ind;
while (q.next()) {
bool isPk = q.value(PK_IDX).toInt();
if (onlyPIndex && !isPk)
continue;
QString typeName = q.value(TYPE_IDX).toString().toLower();
QSqlField fld(q.value(NAME_IDX).toString(), qGetColumnType(typeName));
if (isPk && (typeName == QLatin1String("integer")))
// INTEGER PRIMARY KEY fields are auto-generated in sqlite
// INT PRIMARY KEY is not the same as INTEGER PRIMARY KEY!
fld.setAutoValue(true);
fld.setRequired(q.value(NOTNULL_IDX).toInt() != 0);
fld.setDefaultValue(q.value(DFLT_VALUE_IDX));
ind.append(fld);
}
return ind;
}
示例3: field
QSqlIndex Q3SqlCursor::index(const QStringList& fieldNames) const
{
QSqlIndex idx;
for (QStringList::ConstIterator it = fieldNames.begin(); it != fieldNames.end(); ++it) {
QSqlField f = field((*it));
if (!f.isValid()) { /* all fields must exist */
idx.clear();
break;
}
idx.append(f);
}
return idx;
}
示例4: primaryIndex
QSqlIndex QMYSQLDriver::primaryIndex( const QString& tablename ) const
{
QSqlIndex idx;
if ( !isOpen() )
return idx;
QSqlQuery i = createQuery();
QString stmt( "show index from %1;" );
QSqlRecord fil = record( tablename );
i.exec( stmt.arg( tablename ) );
while ( i.isActive() && i.next() ) {
if ( i.value(2).toString() == "PRIMARY" ) {
idx.append( *fil.field( i.value(4).toString() ) );
idx.setCursorName( i.value(0).toString() );
idx.setName( i.value(2).toString() );
}
}
return idx;
}
示例5: indexFromStringList
static QSqlIndex indexFromStringList(const QStringList& l, const Q3SqlCursor* cursor)
{
QSqlIndex newSort;
for (int i = 0; i < l.count(); ++i) {
QString f = l[i];
bool desc = false;
if (f.mid(f.length()-3) == QLatin1String("ASC"))
f = f.mid(0, f.length()-3);
if (f.mid(f.length()-4) == QLatin1String("DESC")) {
desc = true;
f = f.mid(0, f.length()-4);
}
int dot = f.lastIndexOf(QLatin1Char('.'));
if (dot != -1)
f = f.mid(dot+1);
const QSqlField field = cursor->field(f.trimmed());
if (field.isValid())
newSort.append(field, desc);
else
qWarning("QSqlIndex::indexFromStringList: unknown field: '%s'", f.latin1());
}
return newSort;
}
示例6: open
//.........这里部分代码省略.........
if (!q.exec(QLatin1String("BEGIN"))) {
setLastError(QSqlError(tr("Unable to begin transaction"),
q.lastError().databaseText(), QSqlError::TransactionError));
return false;
}
return true;
}
bool QSQLiteDriver::commitTransaction()
{
if (!isOpen() || isOpenError())
return false;
QSqlQuery q(createResult());
if (!q.exec(QLatin1String("COMMIT"))) {
setLastError(QSqlError(tr("Unable to commit transaction"),
q.lastError().databaseText(), QSqlError::TransactionError));
return false;
}
return true;
}
bool QSQLiteDriver::rollbackTransaction()
{
if (!isOpen() || isOpenError())
return false;
QSqlQuery q(createResult());
if (!q.exec(QLatin1String("ROLLBACK"))) {
setLastError(QSqlError(tr("Unable to rollback transaction"),
q.lastError().databaseText(), QSqlError::TransactionError));
return false;
}
return true;
}
QStringList QSQLiteDriver::tables(QSql::TableType type) const
{
QStringList res;
if (!isOpen())
return res;
QSqlQuery q(createResult());
q.setForwardOnly(true);
QString sql = QLatin1String("SELECT name FROM sqlite_master WHERE %1 "
"UNION ALL SELECT name FROM sqlite_temp_master WHERE %1");
if ((type & QSql::Tables) && (type & QSql::Views))
sql = sql.arg(QLatin1String("type='table' OR type='view'"));
else if (type & QSql::Tables)
sql = sql.arg(QLatin1String("type='table'"));
else if (type & QSql::Views)
sql = sql.arg(QLatin1String("type='view'"));
else
sql.clear();
if (!sql.isEmpty() && q.exec(sql)) {
while(q.next())
res.append(q.value(0).toString());
}
if (type & QSql::SystemTables) {
// there are no internal tables beside this one:
res.append(QLatin1String("sqlite_master"));
}
return res;
}
static QSqlIndex qGetTableInfo(QSqlQuery &q, const QString &tableName, bool onlyPIndex = false)
{
QString schema;
QString table(tableName);
int indexOfSeparator = tableName.indexOf(QLatin1Char('.'));
if (indexOfSeparator > -1) {
schema = tableName.left(indexOfSeparator).append(QLatin1Char('.'));
table = tableName.mid(indexOfSeparator + 1);
}
q.exec(QLatin1String("PRAGMA ") + schema + QLatin1String("table_info (") + _q_escapeIdentifier(table) + QLatin1String(")"));
QSqlIndex ind;
while (q.next()) {
bool isPk = q.value(5).toInt();
if (onlyPIndex && !isPk)
continue;
QString typeName = q.value(2).toString().toLower();
QSqlField fld(q.value(1).toString(), qGetColumnType(typeName));
if (isPk && (typeName == QLatin1String("integer")))
// INTEGER PRIMARY KEY fields are auto-generated in sqlite
// INT PRIMARY KEY is not the same as INTEGER PRIMARY KEY!
fld.setAutoValue(true);
fld.setRequired(q.value(3).toInt() != 0);
fld.setDefaultValue(q.value(4));
ind.append(fld);
}
return ind;
}