本文整理汇总了C++中Database::DeleteTable方法的典型用法代码示例。如果您正苦于以下问题:C++ Database::DeleteTable方法的具体用法?C++ Database::DeleteTable怎么用?C++ Database::DeleteTable使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Database
的用法示例。
在下文中一共展示了Database::DeleteTable方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OnDropTable
void DatabaseCanvas::OnDropTable(wxCommandEvent &event)
{
ShapeList list;
bool isTable;
int answer;
MyErdTable *erdTable = NULL;
DatabaseTable *table = NULL;
wxString name;
ConstraintSign *sign = NULL;
Constraint *constraint = NULL;
DrawingDocument *doc = (DrawingDocument *) m_view->GetDocument();
Database *db = doc->GetDatabase();
std::vector<std::wstring> errors, localColumns, refColumn;
std::vector<FKField *> newFK;
std::wstring command;
int match = 0;
GetSelectedShapes( list );
if( list.size() == 1 )
isTable = true;
else
isTable = false;
for( ShapeList::iterator it = list.begin(); it != list.end(); it++ )
{
MyErdTable *tbl = wxDynamicCast( (*it), MyErdTable );
if( tbl )
erdTable = tbl;
ConstraintSign *s = wxDynamicCast( (*it), ConstraintSign );
if( s )
sign = s;
}
if( isTable )
{
table = &( const_cast<DatabaseTable &>( erdTable->GetTable() ) );
name = const_cast<DatabaseTable &>( erdTable->GetTable() ).GetTableName();
}
else
{
constraint = sign->GetConstraint();
constraint->GetLocalColumns( localColumns );
constraint->GetRefColumns( refColumn );
match = constraint->GetPGMatch();
}
int eventId = event.GetId();
if( eventId == wxID_DROPOBJECT )
{
wxString message = _( "You are about to delete " );
if( isTable )
message += _( "table " ) + name + _( ". Are you sure?" );
else
{
message += _( "foreign key " );
wxString fkName = constraint->GetName();
if( !fkName.empty() )
message += fkName;
else
message += _( " on " ) + const_cast<DatabaseTable *>( constraint->GetFKTable() )->GetTableName() + _( " references " ) + constraint->GetRefTable() + _( ". Are you sure?" );
}
answer = wxMessageBox( message, _( "Database" ), wxYES_NO | wxNO_DEFAULT );
}
else
answer = wxYES;
if( answer == wxYES )
{
if( isTable && ( ( eventId == wxID_DROPOBJECT && !db->DeleteTable( name.ToStdWstring(), errors ) ) || eventId != wxID_DROPOBJECT ) )
{
if( m_realSelectedShape == m_selectedShape )
{
m_realSelectedShape = NULL;
ShapeList listShapes;
m_pManager.GetShapes( CLASSINFO( MyErdTable ), listShapes );
int size = listShapes.size();
if( listShapes.size() == 1 )
m_realSelectedShape = NULL;
else
{
MyErdTable *tableToRemove = (MyErdTable *) ( listShapes.Item( size - 1 )->GetData() );
if( tableToRemove == erdTable )
m_realSelectedShape = (MyErdTable *) ( listShapes.Item( size - 2 )->GetData() );
else
{
bool found = false;
int i;
for( i = 0; i < size - 1 || !found; i++ )
if( listShapes.Item( i )->GetData() == erdTable )
found = true;
m_realSelectedShape = listShapes.Item( i + 1 )->GetData();
}
}
}
m_pManager.RemoveShape( erdTable );
/* for( ShapeList::iterator it = listShapes.begin(); it != listShapes.end() || !nextShapeFound; ++it )
{
CommentFieldShape *shape = wxDynamicCast( (*it), CommentFieldShape );
if( m_showComments )
{
shape->SetText( const_cast<Field *>( shape->GetFieldForComment() )->GetComment() );
}
else
{
shape->SetText( wxEmptyString );
//.........这里部分代码省略.........