本文整理汇总了C++中FLFieldMetaData::type方法的典型用法代码示例。如果您正苦于以下问题:C++ FLFieldMetaData::type方法的具体用法?C++ FLFieldMetaData::type怎么用?C++ FLFieldMetaData::type使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FLFieldMetaData
的用法示例。
在下文中一共展示了FLFieldMetaData::type方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: nextCounter
QVariant FLUtil::nextCounter( const QString & name, FLSqlCursor * cursor_ ) {
if ( !cursor_ )
return QVariant();
FLTableMetaData *tMD = cursor_->metadata();
if ( !tMD )
return QVariant();
FLFieldMetaData *field = tMD->field( name );
if ( !field )
return QVariant();
int type = field->type();
if ( type != QVariant::String && type != QVariant::Double )
return QVariant();
unsigned int len = field->length();
QString cadena;
FLSqlQuery q( 0, cursor_->db()->connectionName() );
q.setForwardOnly( true );
q.setTablesList( tMD->name() );
q.setSelect( name );
q.setFrom( tMD->name() );
q.setWhere( "LENGTH(" + name + ")=" + QString::number( len ) );
q.setOrderBy( name + " DESC" );
if ( !q.exec() )
return QVariant();
double maxRange = pow( 10, len );
double numero = maxRange;
while ( numero >= maxRange ) {
if ( !q.next() ) {
numero = 1;
break;
}
numero = q.value( 0 ).toDouble();
numero++;
}
if ( type == QVariant::String ) {
cadena = QString::number( numero, 'f', 0 );
if ( cadena.length() < len ) {
QString str;
str.fill( '0', ( len - cadena.length() ) );
cadena = str + cadena;
}
return QVariant( cadena );
}
if ( type == QVariant::Double )
return QVariant( numero );
return QVariant();
}
示例2: recordInfo
QSqlRecordInfo SqliteDriver::recordInfo(const QString &tablename) const
{
QSqlRecordInfo info;
if (!isOpen() || !dataBase_)
return info;
QDomDocument doc(tablename);
QDomElement docElem;
QString stream = db_->managerModules()->contentCached(tablename + ".mtd");
if (!FLUtil::domDocumentSetContent(doc, stream)) {
#ifdef FL_DEBUG
qWarning("FLManager : " + QApplication::tr("Error al cargar los metadatos para la tabla %1").arg(tablename));
#endif
return recordInfo2(tablename);
}
docElem = doc.documentElement();
FLTableMetaData *mtd = db_->manager()->metadata(&docElem, true);
if (!mtd)
return recordInfo2(tablename);
FLTableMetaData::FLFieldMetaDataList *fl = mtd->fieldList();
if (!fl) {
delete mtd;
return recordInfo2(tablename);
}
if (fl->isEmpty()) {
delete mtd;
return recordInfo2(tablename);
}
QStringList fieldsNames = QStringList::split(",", mtd->fieldsNames());
for (QStringList::Iterator it = fieldsNames.begin(); it != fieldsNames.end(); ++it) {
FLFieldMetaData *field = mtd->field((*it));
info.append(QSqlFieldInfo(field->name(), FLFieldMetaData::flDecodeType(field->type())));
}
delete mtd;
return info;
}
示例3: sqlCreateTable
QString SqliteDriver::sqlCreateTable(FLTableMetaData *tmd)
{
#ifndef FL_QUICK_CLIENT
if (!tmd)
return QString::null;
QString primaryKey(QString::null);
QString sql = "CREATE TABLE " + tmd->name() + " (";
FLFieldMetaData *field;
FLTableMetaData::FLFieldMetaDataList *fieldList = tmd->fieldList();
unsigned int unlocks = 0;
QDictIterator<FLFieldMetaData> it(*fieldList);
while ((field = it.current()) != 0) {
++it;
if (field->type() == FLFieldMetaData::Unlock)
unlocks++;
}
if (unlocks > 1) {
#ifdef FL_DEBUG
qWarning("FLManager : " + QApplication::tr("No se ha podido crear la tabla ") + tmd->name());
qWarning("FLManager : " + QApplication::tr("Hay más de un campo tipo unlock. Solo puede haber uno."));
#endif
return QString::null;
}
QDictIterator<FLFieldMetaData> it2(*fieldList);
while ((field = it2.current()) != 0) {
++it2;
sql += field->name();
switch (field->type()) {
case QVariant::Int:
sql += " INTEGER";
break;
case QVariant::UInt:
sql += " INTEGER";
break;
case QVariant::Bool:
case FLFieldMetaData::Unlock:
sql += " BOOLEAN";
break;
case QVariant::Double:
sql += " FLOAT";
break;
case QVariant::Time:
sql += " VARCHAR(20)";
break;
case QVariant::Date:
sql += " VARCHAR(20)";
break;
case QVariant::Pixmap:
sql += " TEXT";
break;
case QVariant::String:
sql += " VARCHAR";
break;
case QVariant::StringList:
sql += " TEXT";
break;
case QVariant::ByteArray:
sql += " CLOB";
break;
case FLFieldMetaData::Serial:
sql += " INTEGER";
if (!field->isPrimaryKey())
sql += " PRIMARY KEY";
break;
}
int longitud = field->length();
if (longitud > 0)
sql += "(" + QString::number(longitud) + ")";
if (field->isPrimaryKey()) {
if (primaryKey.isEmpty()) {
sql += " PRIMARY KEY";
primaryKey = field->name();
} else {
#ifdef FL_DEBUG
qWarning(QApplication::tr("FLManager : Tabla -> ") +
tmd->name() + QApplication::tr(" . Se ha intentado poner una segunda clave primaria para el campo ") +
field->name() + QApplication::tr(" , pero el campo ") + primaryKey +
QApplication::tr(" ya es clave primaria. Sólo puede existir una clave primaria en FLTableMetaData, use FLCompoundKey para crear claves compuestas."));
#endif
return QString::null;
}
} else {
//.........这里部分代码省略.........
示例4: alterTable
//.........这里部分代码省略.........
if ((oldMTD != newMTD) && oldMTD)
delete oldMTD;
if (newMTD)
delete newMTD;
return false;
}
if (fieldList->isEmpty()) {
#ifdef FL_DEBUG
qWarning("FLManager::alterTable : " + QApplication::tr("Los nuevos metadatos no tienen campos."));
#endif
db_->dbAux() ->rollback();
if ((oldMTD != newMTD) && oldMTD)
delete oldMTD;
if (newMTD)
delete newMTD;
return false;
}
QVariant v;
bool ok = true;
while (oldCursor.next()) {
newBuffer = newCursor.primeInsert();
QDictIterator<FLFieldMetaData> it(*fieldList);
while ((newField = it.current()) != 0) {
++it;
oldField = oldMTD->field(newField->name());
if (!oldField || !oldCursor.field(oldField->name())) {
if (!oldField)
oldField = newField;
v = newField->defaultValue();
v.cast(FLFieldMetaData::flDecodeType(newField->type()));
} else {
v = oldCursor.value(newField->name());
if ((!oldField->allowNull() || !newField->allowNull()) &&
(v.isNull() || !v.isValid())) {
QVariant defVal(newField->defaultValue());
if (!defVal.isNull() && defVal.isValid())
v = defVal;
}
if (!v.cast(newBuffer->value(newField->name()).type())) {
#ifdef FL_DEBUG
qWarning("FLManager::alterTable : " +
QApplication::tr("Los tipos del campo %1 no son compatibles. Se introducirá un valor nulo.")
.arg(newField->name()));
#endif
}
}
if ((!oldField->allowNull() || !newField->allowNull()) && (v.isNull() || !v.isValid())) {
switch (oldField->type()) {
case QVariant::Int:
case FLFieldMetaData::Serial:
case QVariant::UInt:
case QVariant::Bool:
case FLFieldMetaData::Unlock:
v = int(0);
break;
case QVariant::Double:
v = double(0.0);
break;
case QVariant::Time:
v = QTime::currentTime();
break;
case QVariant::Date:
示例5: while
//.........这里部分代码省略.........
no = no.nextSibling();
continue;
}
if (e.tagName() == "concurWarn") {
cw = (e.text() == "true");
no = no.nextSibling();
continue;
}
if (e.tagName() == "detectLocks") {
dl = (e.text() == "true");
no = no.nextSibling();
continue;
}
}
no = no.nextSibling();
}
FLTableMetaData *tmd = new FLTableMetaData(name, a, q);
FLCompoundKey *cK = 0;
QStringList assocs;
tmd->setConcurWarn(cw);
tmd->setDetectLocks(dl);
no = mtd->firstChild();
while (!no.isNull()) {
QDomElement e = no.toElement();
if (!e.isNull()) {
if (e.tagName() == "field") {
FLFieldMetaData *f = metadataField(&e, v, ed);
if (!tmd)
tmd = new FLTableMetaData(name, a, q);
tmd->addFieldMD(f);
if (f->isCompoundKey()) {
if (!cK)
cK = new FLCompoundKey();
cK->addFieldMD(f);
}
if (!f->associatedFieldName().isEmpty()) {
assocs.append(f->associatedFieldName());
assocs.append(f->associatedFieldFilterTo());
assocs.append(f->name());
}
no = no.nextSibling();
continue;
}
}
no = no.nextSibling();
}
tmd->setCompoundKey(cK);
QString aWith, aBy;
for (QStringList::Iterator it = assocs.begin(); it != assocs.end(); ++it) {
aWith = (*it);
++it;
aBy = (*it);
++it;
tmd->field((*it))->setAssociatedField(tmd->field(aWith), aBy);
}
if (!q.isEmpty() && !quick) {
FLSqlQuery *qry = query(q, tmd);
if (qry) {
QStringList fL = qry->fieldList();
QString table, field;
QString fields = tmd->fieldsNames();
for (QStringList::Iterator it = fL.begin(); it != fL.end(); ++it) {
table = (*it).section('.', 0, 0);
field = (*it).section('.', 1, 1);
if (table == name || fields.contains(field.lower()))
continue;
FLTableMetaData *mtdAux = metadata(table, true);
if (mtdAux) {
FLFieldMetaData *fmtdAux = mtdAux->field(field);
if (fmtdAux) {
int typeAux = fmtdAux->type();
if (typeAux == FLFieldMetaData::Serial)
typeAux = QVariant::UInt;
tmd->addFieldMD(new FLFieldMetaData(field, fmtdAux->alias(), true, false, typeAux, fmtdAux->length(),
false, fmtdAux->visible(), fmtdAux->editable(), fmtdAux->partInteger(),
fmtdAux->partDecimal(), false, false, false, QVariant(), false,
QString::null, fmtdAux->visibleGrid(), true, false));
}
}
}
qry->deleteLater();
}
}
FLAccessControlLists *acl = aqApp ->acl();
if (acl)
acl->process(tmd);
return tmd;
}