本文整理汇总了C++中DatabasePtr::findByNameAndType方法的典型用法代码示例。如果您正苦于以下问题:C++ DatabasePtr::findByNameAndType方法的具体用法?C++ DatabasePtr::findByNameAndType怎么用?C++ DatabasePtr::findByNameAndType使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DatabasePtr
的用法示例。
在下文中一共展示了DatabasePtr::findByNameAndType方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: handleURI
bool PropertiesHandler::handleURI(URI& uri)
{
if (uri.action != "properties")
return false;
MetadataItemPropertiesPanel* parent = dynamic_cast<
MetadataItemPropertiesPanel*>(getParentWindow(uri));
if (!parent)
return true;
DatabasePtr db = parent->getObservedObject()->getDatabase();
if (!db)
return true;
NodeType n = getTypeByName(uri.getParam("object_type"));
MetadataItem* object = db->findByNameAndType(n,
uri.getParam("object_name"));
if (!object)
{
::wxMessageBox(
_("Cannot find destination object\nThis should never happen."),
_("Error"), wxICON_ERROR);
return true;
}
if (uri.getParam("target") == "new_tab")
{
MetadataItemPropertiesFrame::openNewPropertyPageInTab(object,
parent->getParentFrame());
}
else if (uri.getParam("target") == "new")
MetadataItemPropertiesFrame::openNewPropertyPageInFrame(object);
else
MetadataItemPropertiesFrame::showPropertyPage(object);
return true;
}
示例2: tablesRelate
// find all tables from "tables" which have foreign keys with "table"
// and return them in "list"
bool Table::tablesRelate(const std::vector<wxString>& tables, Table* table,
std::vector<ForeignKey>& list)
{
// see if "table" references some of the "tables"
std::vector<ForeignKey> *fks = table->getForeignKeys();
for (std::vector<ForeignKey>::iterator it = fks->begin(); it != fks->end(); ++it)
{
ForeignKey& fk = (*it);
for (std::vector<wxString>::const_iterator i2 = tables.begin(); i2 != tables.end(); ++i2)
if ((*i2) == fk.referencedTableM)
list.push_back(fk);
}
// see if some of the "tables" reference the "table"
std::vector<Dependency> deplist;
table->getDependencies(deplist, false);
for (std::vector<Dependency>::iterator it = deplist.begin(); it != deplist.end(); ++it)
{
if ((*it).getType() == ntTable)
{
for (std::vector<wxString>::const_iterator i2 = tables.begin(); i2 != tables.end(); ++i2)
{
if ((*i2) == (*it).getName_())
{
// find foreign keys for that table
DatabasePtr db = table->getDatabase();
Table* other_table = dynamic_cast<Table*>(db->findByNameAndType(ntTable, (*i2)));
if (!other_table)
break;
std::vector<ForeignKey>* fks = other_table->getForeignKeys();
for (std::vector<ForeignKey>::iterator it = fks->begin(); it != fks->end(); ++it)
{
ForeignKey& fk = (*it);
if (table->getName_() == fk.referencedTableM)
{
list.push_back(fk);
break; // no need for more
}
}
}
}
}
}
return !list.empty();
}
示例3: getDependencies
//.........这里部分代码省略.........
sql += " union \n"
" select distinct cast(0 as smallint), f.RDB$RELATION_NAME, f.RDB$BASE_FIELD \n"
" from RDB$RELATION_FIELDS f \n"
" join RDB$VIEW_RELATIONS vr on f.RDB$VIEW_CONTEXT = vr.RDB$VIEW_CONTEXT \n"
" and f.RDB$RELATION_NAME = vr.RDB$VIEW_NAME \n"
" where vr.rdb$relation_name = ? \n";
params++;
}
sql += " order by 1, 2, 3";
st1->Prepare(wx2std(sql, d->getCharsetConverter()));
st1->Set(1, mytype);
st1->Set(2, mytype2);
for (int i = 0; i < params; i++)
st1->Set(3 + i, wx2std(getName_(), d->getCharsetConverter()));
st1->Execute();
MetadataItem* last = 0;
Dependency* dep = 0;
while (st1->Fetch())
{
int object_type;
st1->Get(1, &object_type);
if (object_type > type_count) // some system object, not interesting for us
continue;
NodeType t = dep_types[object_type];
if (t == ntUnknown) // ditto
continue;
std::string objname_std;
st1->Get(2, objname_std);
wxString objname(std2wxIdentifier(objname_std,
d->getCharsetConverter()));
MetadataItem* current = d->findByNameAndType(t, objname);
if (!current)
{
if (t == ntTable) {
// maybe it's a view masked as table
current = d->findByNameAndType(ntView, objname);
// or possibly a system table
if (!current)
current = d->findByNameAndType(ntSysTable, objname);
}
if (!ofObject && t == ntTrigger)
{
// system trigger dependent of this object indicates possible check constraint on a table
// that references this object. So, let's check if this trigger is used for check constraint
// and get that table's name
IBPP::Statement st2 = IBPP::StatementFactory(db, tr1);
st2->Prepare(
"select r.rdb$relation_name from rdb$relation_constraints r "
" join rdb$check_constraints c on r.rdb$constraint_name=c.rdb$constraint_name "
" and r.rdb$constraint_type = 'CHECK' where c.rdb$trigger_name = ? "
);
st2->Set(1, objname_std);
st2->Execute();
if (st2->Fetch()) // table using that trigger found
{
std::string s;
st2->Get(1, s);
wxString tablecheck(std2wxIdentifier(s, d->getCharsetConverter()));
if (getName_() != tablecheck) // avoid self-reference
current = d->findByNameAndType(ntTable, tablecheck);
}
}
if (!current)