本文整理汇总了C++中SqlQuery::size方法的典型用法代码示例。如果您正苦于以下问题:C++ SqlQuery::size方法的具体用法?C++ SqlQuery::size怎么用?C++ SqlQuery::size使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SqlQuery
的用法示例。
在下文中一共展示了SqlQuery::size方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: geneToApprovedID
int NGSD::geneToApprovedID(const QByteArray& gene)
{
//init
static SqlQuery q_gene = getQuery(true);
static SqlQuery q_prev = getQuery(true);
static SqlQuery q_syn = getQuery(true);
static bool init = false;
if (!init)
{
q_gene.prepare("SELECT id FROM gene WHERE symbol=:1");
q_prev.prepare("SELECT g.id FROM gene g, gene_alias ga WHERE g.id=ga.gene_id AND ga.symbol=:1 AND ga.type='previous'");
q_syn.prepare("SELECT g.id FROM gene g, gene_alias ga WHERE g.id=ga.gene_id AND ga.symbol=:1 AND ga.type='synonym'");
init = true;
}
//approved
q_gene.bindValue(0, gene);
q_gene.exec();
if (q_gene.size()==1)
{
q_gene.next();
return q_gene.value(0).toInt();
}
//previous
q_prev.bindValue(0, gene);
q_prev.exec();
if (q_prev.size()==1)
{
q_prev.next();
return q_prev.value(0).toInt();
}
else if(q_prev.size()>1)
{
return -1;
}
//synonymous
q_syn.bindValue(0, gene);
q_syn.exec();
if (q_syn.size()==1)
{
q_syn.next();
return q_syn.value(0).toInt();
}
return -1;
}
示例2: init
void NGSD::init(QString password)
{
//remove existing tables
SqlQuery query = getQuery();
query.exec("SHOW TABLES");
if (query.size()>0)
{
//check password for re-init of production DB
if (!test_db_ && password!=Settings::string("ngsd_pass"))
{
THROW(DatabaseException, "Password provided for re-initialization of procution database is incorrect!");
}
//get table list
QStringList tables;
while(query.next())
{
tables << query.value(0).toString();
}
//remove old tables
if (!tables.isEmpty())
{
query.exec("SET FOREIGN_KEY_CHECKS = 0;");
query.exec("DROP TABLE " + tables.join(","));
query.exec("SET FOREIGN_KEY_CHECKS = 1;");
}
}
//initilize
executeQueriesFromFile(":/resources/NGSD_schema.sql");
}
示例3: tableExists
void NGSD::tableExists(QString table)
{
SqlQuery query = getQuery();
query.exec("SHOW TABLES LIKE '" + table + "'");
if (query.size()==0)
{
THROW(DatabaseException, "Table '" + table + "' does not exist!")
}
}
示例4: getValues
QStringList NGSD::getValues(const QString& query)
{
SqlQuery q = getQuery();
q.exec(query);
QStringList output;
output.reserve(q.size());
while(q.next())
{
output.append(q.value(0).toString());
}
return output;
}
示例5: getQuery
QPair<QString, QString> NGSD::getClassification(const Variant& variant)
{
SqlQuery query = getQuery();
query.exec("SELECT class, comment FROM variant_classification WHERE variant_id='" + variantId(variant) + "'");
if (query.size()==0)
{
return QPair<QString, QString>("n/a", "");
}
else
{
query.next();
return QPair<QString, QString>(query.value(0).toString().trimmed(), query.value(1).toString().trimmed());
}
}
示例6: getValidationStatus
ValidationInfo NGSD::getValidationStatus(const QString& filename, const Variant& variant)
{
SqlQuery query = getQuery();
query.exec("SELECT status, type, comment FROM variant_validation WHERE sample_id='" + sampleId(filename) + "' AND variant_id='" + variantId(variant) + "'");
if (query.size()==0)
{
return ValidationInfo();
}
else
{
query.next();
return ValidationInfo{ query.value(0).toString().trimmed(), query.value(1).toString().trimmed(), query.value(2).toString().trimmed() };
}
}
示例7: getValue
QVariant NGSD::getValue(const QString& query, bool no_value_is_ok)
{
SqlQuery q = getQuery();
q.exec(query);
if (q.size()==0)
{
if (no_value_is_ok)
{
return QVariant();
}
else
{
THROW(DatabaseException, "NGSD single value query returned no value: " + query);
}
}
if (q.size()>1)
{
THROW(DatabaseException, "NGSD single value query returned several values: " + query);
}
q.next();
return q.value(0);
}
示例8: variantId
QString NGSD::variantId(const Variant& variant, bool throw_if_fails)
{
SqlQuery query = getQuery(); //use binding user input (safety)
query.prepare("SELECT id FROM variant WHERE chr=:chr AND start='"+QString::number(variant.start())+"' AND end='"+QString::number(variant.end())+"' AND ref=:ref AND obs=:obs");
query.bindValue(":chr", variant.chr().str());
query.bindValue(":ref", variant.ref());
query.bindValue(":obs", variant.obs());
query.exec();
if (query.size()==0)
{
if (throw_if_fails)
{
THROW(DatabaseException, "Variant " + variant.toString() + " not found in NGSD!");
}
else
{
return "-1";
}
}
query.next();
return query.value(0).toString();
}
示例9: sampleId
QString NGSD::sampleId(const QString& filename, bool throw_if_fails)
{
QStringList parts = QFileInfo(filename).baseName().append('_').split('_');
//get sample ID
SqlQuery query = getQuery(); //use binding (user input)
query.prepare("SELECT id FROM sample WHERE name=:sample");
query.bindValue(":sample", parts[0]);
query.exec();
if (query.size()==0)
{
if(throw_if_fails)
{
THROW(DatabaseException, "Sample name '" + parts[0] + "' not found in NGSD!");
}
else
{
return "";
}
}
query.next();
return query.value(0).toString();
}
示例10: processedSampleId
QString NGSD::processedSampleId(const QString& filename, bool throw_if_fails)
{
QStringList parts = QFileInfo(filename).baseName().append('_').split('_');
//get sample ID
SqlQuery query = getQuery(); //use binding (user input)
query.prepare("SELECT ps.id FROM processed_sample ps, sample s WHERE s.name=:sample AND ps.sample_id=s.id AND ps.process_id=:psnum");
query.bindValue(":sample", parts[0]);
query.bindValue(":psnum", QString::number(parts[1].toInt()));
query.exec();
if (query.size()==0)
{
if(throw_if_fails)
{
THROW(DatabaseException, "Processed sample name '" + parts[0] + "_" + parts[1] + "' not found in NGSD!");
}
else
{
return "";
}
}
query.next();
return query.value(0).toString();
}
示例11: qMakePair
QPair<QByteArray, QByteArray> NGSD::geneToApproved(const QByteArray& gene)
{
//init
static SqlQuery q_gene = getQuery(true);
static SqlQuery q_prev = getQuery(true);
static SqlQuery q_syn = getQuery(true);
static bool init = false;
if (!init)
{
q_gene.prepare("SELECT id FROM gene WHERE symbol=:1");
q_prev.prepare("SELECT g.symbol FROM gene g, gene_alias ga WHERE g.id=ga.gene_id AND ga.symbol=:1 AND ga.type='previous'");
q_syn.prepare("SELECT g.symbol FROM gene g, gene_alias ga WHERE g.id=ga.gene_id AND ga.symbol=:1 AND ga.type='synonym'");
init = true;
}
//approved
q_gene.bindValue(0, gene);
q_gene.exec();
if (q_gene.size()==1)
{
q_gene.next();
return qMakePair(gene, QByteArray("KEPT: is approved symbol"));
}
//previous
q_prev.bindValue(0, gene);
q_prev.exec();
if (q_prev.size()==1)
{
q_prev.next();
return qMakePair(q_prev.value(0).toByteArray(), "REPLACED: " + gene + " is a previous symbol");
}
else if(q_prev.size()>1)
{
QByteArray genes;
while(q_prev.next())
{
if (!genes.isEmpty()) genes.append(", ");
genes.append(q_prev.value(0).toByteArray());
}
return qMakePair(gene, "ERROR: is a previous symbol of the genes " + genes);
}
//synonymous
q_syn.bindValue(0, gene);
q_syn.exec();
if (q_syn.size()==1)
{
q_syn.next();
return qMakePair(q_syn.value(0).toByteArray(), "REPLACED: " + gene + " is a synonymous symbol");
}
else if(q_syn.size()>1)
{
QByteArray genes;
while(q_syn.next())
{
if (!genes.isEmpty()) genes.append(", ");
genes.append(q_syn.value(0).toByteArray());
}
return qMakePair(gene, "ERROR: is a synonymous symbol of the genes " + genes);
}
return qMakePair(gene, QByteArray("ERROR: is unknown symbol"));
}
示例12: annotate
void NGSD::annotate(VariantList& variants, QString filename)
{
initProgress("NGSD annotation", true);
//get sample ids
QString s_id = sampleId(filename, false);
QString ps_id = processedSampleId(filename, false);
QString sys_id = getValue("SELECT processing_system_id FROM processed_sample WHERE id='" + processedSampleId(filename, false) + "'").toString();
//check if we could determine the sample
bool found_in_db = true;
if (s_id=="" || ps_id=="" || sys_id=="")
{
Log::warn("Could not find processed sample in NGSD by name '" + filename + "'. Annotation will be incomplete because processing system could not be determined!");
found_in_db = false;
}
//get sample ids that have processed samples with the same processing system (not same sample, variants imported, same processing system, good quality of sample, not tumor)
QSet<int> sys_sample_ids;
SqlQuery tmp = getQuery();
tmp.exec("SELECT DISTINCT s.id FROM processed_sample as ps, sample s WHERE ps.processing_system_id='" + sys_id + "' AND ps.sample_id=s.id AND s.tumor='0' AND s.quality='good' AND s.id!='" + s_id + "' AND (SELECT count(id) FROM detected_variant as dv WHERE dv.processed_sample_id = ps.id)>0");
while(tmp.next())
{
sys_sample_ids.insert(tmp.value(0).toInt());
}
//remove all NGSD-specific columns
QList<VariantAnnotationHeader> headers = variants.annotations();
foreach(const VariantAnnotationHeader& header, headers)
{
if (header.name().startsWith("ihdb_"))
{
removeColumnIfPresent(variants, header.name(), true);
}
}
removeColumnIfPresent(variants, "classification", true);
removeColumnIfPresent(variants, "classification_comment", true);
removeColumnIfPresent(variants, "validated", true);
removeColumnIfPresent(variants, "comment", true);
//get required column indices
QString num_samples = QString::number(sys_sample_ids.count());
int ihdb_hom_idx = addColumn(variants, "ihdb_hom", "Homozygous variant counts in NGSD for the same processing system (" + num_samples + " samples).");
int ihdb_het_idx = addColumn(variants, "ihdb_het", "Heterozyous variant counts in NGSD for the same processing system (" + num_samples + " samples).");
int ihdb_wt_idx = addColumn(variants, "ihdb_wt", "Wildtype variant counts in NGSD for the same processing system (" + num_samples + " samples).");
int ihdb_all_hom_idx = addColumn(variants, "ihdb_allsys_hom", "Homozygous variant counts in NGSD independent of the processing system.");
int ihdb_all_het_idx = addColumn(variants, "ihdb_allsys_het", "Heterozygous variant counts in NGSD independent of the processing system.");
int class_idx = addColumn(variants, "classification", "Classification from the NGSD.");
int clacom_idx = addColumn(variants, "classification_comment", "Classification comment from the NGSD.");
int valid_idx = addColumn(variants, "validated", "Validation information from the NGSD. Validation results of other samples are listed in brackets!");
if (variants.annotationIndexByName("comment", true, false)==-1) addColumn(variants, "comment", "Comments from the NGSD. Comments of other samples are listed in brackets!");
int comment_idx = variants.annotationIndexByName("comment", true, false);
//(re-)annotate the variants
SqlQuery query = getQuery();
for (int i=0; i<variants.count(); ++i)
{
//QTime timer;
//timer.start();
//variant id
Variant& v = variants[i];
QByteArray v_id = variantId(v, false).toLatin1();
//variant classification
QVariant classification = getValue("SELECT class FROM variant_classification WHERE variant_id='" + v_id + "'", true);
if (!classification.isNull())
{
v.annotations()[class_idx] = classification.toByteArray().replace("n/a", "");
v.annotations()[clacom_idx] = getValue("SELECT comment FROM variant_classification WHERE variant_id='" + v_id + "'", true).toByteArray().replace("\n", " ").replace("\t", " ");
}
//int t_v = timer.elapsed();
//timer.restart();
//detected variant infos
int dv_id = -1;
QByteArray comment = "";
if (found_in_db)
{
query.exec("SELECT id, comment FROM detected_variant WHERE processed_sample_id='" + ps_id + "' AND variant_id='" + v_id + "'");
if (query.size()==1)
{
query.next();
dv_id = query.value(0).toInt();
comment = query.value(1).toByteArray();
}
}
//validation info
int vv_id = -1;
QByteArray val_status = "";
if (found_in_db)
{
query.exec("SELECT id, status FROM variant_validation WHERE sample_id='" + s_id + "' AND variant_id='" + v_id + "'");
if (query.size()==1)
{
query.next();
vv_id = query.value(0).toInt();
val_status = query.value(1).toByteArray().replace("n/a", "");
}
//.........这里部分代码省略.........