本文整理汇总了C++中DatabasePtr::getIBPPDatabase方法的典型用法代码示例。如果您正苦于以下问题:C++ DatabasePtr::getIBPPDatabase方法的具体用法?C++ DatabasePtr::getIBPPDatabase怎么用?C++ DatabasePtr::getIBPPDatabase使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DatabasePtr
的用法示例。
在下文中一共展示了DatabasePtr::getIBPPDatabase方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OnButtonStartStopClick
void EventWatcherFrame::OnButtonStartStopClick(wxCommandEvent& WXUNUSED(event))
{
if (eventsM != 0)
eventsM.clear();
else
{
DatabasePtr database = getDatabase();
if (!database)
{
Close();
return;
}
IBPP::Database db(database->getIBPPDatabase());
eventsM = IBPP::EventsFactory(db);
defineMonitoredEvents();
}
updateMonitoringActive();
}
示例2: handleURI
bool DatabaseInfoHandler::handleURI(URI& uri)
{
bool isEditSweep, isEditForcedWrites, isEditReserve, isEditReadOnly,
isEditPageBuffers;
isEditSweep = (uri.action == "edit_db_sweep_interval");
isEditForcedWrites = (uri.action == "edit_db_forced_writes");
isEditReserve = (uri.action == "edit_db_reserve_space");
isEditReadOnly = (uri.action == "edit_db_read_only");
isEditPageBuffers = (uri.action == "edit_db_page_buffers");
if (!isEditSweep && !isEditForcedWrites && !isEditReserve
&& !isEditReadOnly && !isEditPageBuffers)
{
return false;
}
DatabasePtr d = extractMetadataItemPtrFromURI<Database>(uri);
wxWindow* w = getParentWindow(uri);
// when either the database or the window does not exist
// return immediately. Because this function returns whether
// the specified uri is handled, return true.
if (!d || !w || !d->isConnected())
return true;
IBPP::Database& db = d->getIBPPDatabase();
IBPP::Service svc = IBPP::ServiceFactory(
wx2std(d->getServer()->getConnectionString()),
db->Username(), db->UserPassword());
svc->Connect();
if (isEditSweep || isEditPageBuffers)
{
long oldValue = 0;
wxString title, label;
if (isEditSweep)
{
oldValue = d->getInfo().getSweep();
title = _("Enter the new Sweep Interval");
label = _("Sweep Interval");
}
else if (isEditPageBuffers)
{
oldValue = d->getInfo().getBuffers();
title = _("Enter the new value for Page Buffers");
label = _("Page Buffers");
}
while (true)
{
wxString s;
long value = oldValue;
s = ::wxGetTextFromUser(title, label,
wxString::Format("%d", value), w);
// return from the iteration when the entered string is empty, in
// case of cancelling the operation.
if (s.IsEmpty())
break;
if (!s.ToLong(&value))
continue;
// return from the iteration when the interval has not changed
if (value == oldValue)
break;
if (isEditSweep)
svc->SetSweepInterval(wx2std(d->getPath()), value);
else if (isEditPageBuffers)
svc->SetPageBuffers(wx2std(d->getPath()), value);
// Before reloading the info, re-attach to the database
// otherwise the sweep interval won't be changed for FB Classic
// Server.
db->Disconnect();
db->Connect();
d->loadInfo();
break;
}
}
else if (isEditForcedWrites || isEditReserve || isEditReadOnly)
{
bool fw = !d->getInfo().getForcedWrites();
bool reserve = !d->getInfo().getReserve();
bool ro = !d->getInfo().getReadOnly();
// setting these properties requires that the database is
// disconnected.
db->Disconnect();
if (isEditForcedWrites)
svc->SetSyncWrite(wx2std(d->getPath()), fw);
if (isEditReserve)
svc->SetReserveSpace(wx2std(d->getPath()), reserve);
if (isEditReadOnly)
svc->SetReadOnly(wx2std(d->getPath()), ro);
db->Connect();
//.........这里部分代码省略.........
示例3: getDependencies
//! ofObject = true => returns list of objects this object depends on
//! ofObject = false => returns list of objects that depend on this object
void MetadataItem::getDependencies(std::vector<Dependency>& list,
bool ofObject)
{
DatabasePtr d = getDatabase();
int mytype = -1; // map DBH type to RDB$DEPENDENT TYPE
NodeType dep_types[] = { ntTable, ntView, ntTrigger, ntUnknown, ntUnknown,
ntProcedure,ntUnknown, ntException,ntUnknown, ntUnknown,
ntUnknown, ntUnknown, ntUnknown, ntUnknown, ntGenerator,
ntFunction
};
int type_count = sizeof(dep_types)/sizeof(NodeType);
for (int i = 0; i < type_count; i++)
if (typeM == dep_types[i])
mytype = i;
// system tables should be treated as tables
if (typeM == ntSysTable)
mytype = 0;
int mytype2 = mytype;
// views count as relations(tables) when other object refer to them
if (mytype == 1 && !ofObject)
mytype2 = 0;
if (typeM == ntUnknown || mytype == -1)
throw FRError(_("Unsupported type"));
IBPP::Database& db = d->getIBPPDatabase();
IBPP::Transaction tr1 = IBPP::TransactionFactory(db, IBPP::amRead);
tr1->Start();
IBPP::Statement st1 = IBPP::StatementFactory(db, tr1);
wxString o1 = (ofObject ? "DEPENDENT" : "DEPENDED_ON");
wxString o2 = (ofObject ? "DEPENDED_ON" : "DEPENDENT");
wxString sql =
"select RDB$" + o2 + "_TYPE, RDB$" + o2 + "_NAME, RDB$FIELD_NAME \n "
" from RDB$DEPENDENCIES \n "
" where RDB$" + o1 + "_TYPE in (?,?) and RDB$" + o1 + "_NAME = ? \n ";
int params = 1;
if ((typeM == ntTable || typeM == ntSysTable || typeM == ntView) && ofObject) // get deps for computed columns
{ // view needed to bind with generators
sql += " union \n"
" SELECT DISTINCT d.rdb$depended_on_type, d.rdb$depended_on_name, d.rdb$field_name \n"
" FROM rdb$relation_fields f \n"
" LEFT JOIN rdb$dependencies d ON d.rdb$dependent_name = f.rdb$field_source \n"
" WHERE d.rdb$dependent_type = 3 AND f.rdb$relation_name = ? \n";
params++;
}
if (!ofObject) // find tables that have calculated columns based on "this" object
{
sql += "union \n"
" SELECT distinct cast(0 as smallint), f.rdb$relation_name, f.rdb$field_name \n"
" from rdb$relation_fields f \n"
" left join rdb$dependencies d on d.rdb$dependent_name = f.rdb$field_source \n"
" where d.rdb$dependent_type = 3 and d.rdb$depended_on_name = ? ";
params++;
}
// get the exact table and fields for views
// rdb$dependencies covers deps. for WHERE clauses in SELECTs in VIEW body
// but we also need mapping for column list in SELECT. These 2 queries cover it:
if (ofObject && typeM == ntView)
{
sql += " union \n"
" select distinct cast(0 as smallint), vr.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 f.rdb$relation_name = ? \n";
params++;
}
// views can depend on other views as well
// we might need to add procedures here one day when Firebird gains support for it
if (!ofObject && (typeM == ntView || typeM == ntTable || typeM == ntSysTable))
{
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];
//.........这里部分代码省略.........