protected virtual void OkClicked(object sender, EventArgs e) { if (context.IsTemporary) { try { //make it a real connection context and fill in the database IConnectionPool pool = DbFactoryService.CreateConnectionPool(DatabaseConnection); pool.Initialize(); ISchemaProvider provider = DbFactoryService.CreateSchemaProvider(DatabaseConnection, pool); DatabaseSchema db = provider.CreateDatabaseSchema(settingsWidget.ConnectionSettings.Database); OnBeforeDatabaseCreation(db); ((AbstractEditSchemaProvider)provider).CreateDatabase(db); context.ConnectionSettings.Database = settingsWidget.ConnectionSettings.Database; context.ConnectionSettings.Name = settingsWidget.ConnectionSettings.Name; context.IsTemporary = false; MessageService.ShowMessage(AddinCatalog.GetString("Database has been created.")); ConnectionContextService.AddDatabaseConnectionContext(context); } catch (Exception ex) { QueryService.RaiseException(ex); Respond(ResponseType.Close); return; } } Respond(ResponseType.Ok); }
protected virtual void RefreshClickedThreaded(object state) { DatabaseConnectionSettings settings = state as DatabaseConnectionSettings; DatabaseConnectionContext context = new DatabaseConnectionContext(settings); IDbFactory fac = DbFactoryService.GetDbFactory(settings.ProviderIdentifier); FakeConnectionPool pool = null; try { pool = new FakeConnectionPool(fac, fac.ConnectionProvider, context); pool.Initialize(); if (pool.HasErrors) { MessageService.ShowError(pool.Error); return; } ISchemaProvider prov = fac.CreateSchemaProvider(pool); DatabaseSchemaCollection databases = prov.GetDatabases(); DispatchService.GuiDispatch(delegate() { foreach (DatabaseSchema db in databases) { storeDatabases.AppendValues(db.Name); } }); isDatabaseListEmpty = databases.Count == 0; } catch { } finally { if (pool != null) { pool.Close(); } } if (isDatabaseListEmpty) { DispatchService.GuiDispatch(delegate() { storeDatabases.AppendValues(AddinCatalog.GetString("No databases found!")); }); } else { DispatchService.GuiDispatch(delegate() { TreeIter iter; if (storeDatabases.GetIterFirst(out iter)) { comboDatabase.SetActiveIter(iter); } }); } }
protected void OnQueryCommand() { TableNode node = (TableNode)CurrentNode.DataItem; IdentifierExpression tableId = new IdentifierExpression(node.Table.Name); SelectStatement sel = new SelectStatement(new FromTableClause(tableId)); SqlQueryView view = new SqlQueryView(); view.SelectedConnectionContext = node.ConnectionContext; IDbFactory fac = DbFactoryService.GetDbFactory(node.ConnectionContext.ConnectionSettings); view.Text = fac.Dialect.GetSql(sel); IdeApp.Workbench.OpenDocument(view, true); }
protected virtual void OpenClicked(object sender, System.EventArgs e) { DatabaseConnectionSettings settingsCopy = CreateDatabaseConnectionSettings(); IDbFactory fac = DbFactoryService.GetDbFactory(settingsCopy.ProviderIdentifier); string database = null; if (fac.GuiProvider.ShowSelectDatabaseDialog(false, out database)) { if (isDatabaseListEmpty) { storeDatabases.Clear(); //clear the fake node } isDatabaseListEmpty = false; TreeIter iter = storeDatabases.AppendValues(database); comboDatabase.SetActiveIter(iter); } }
protected virtual void TestClickedThreaded(object state) { DatabaseConnectionSettings settings = state as DatabaseConnectionSettings; DatabaseConnectionContext context = new DatabaseConnectionContext(settings); IDbFactory fac = DbFactoryService.GetDbFactory(settings.ProviderIdentifier); bool success = false; string error = null; FakeConnectionPool pool = null; IPooledDbConnection conn = null; try { pool = new FakeConnectionPool(fac, fac.ConnectionProvider, context); success = pool.Initialize(); error = pool.Error; } catch (System.Data.DataException ex) { error = ex.Message; success = false; } finally { if (conn != null) { conn.Release(); conn.Dispose(); } if (pool != null) { pool.Close(); } } DispatchService.GuiDispatch(delegate() { buttonTest.Sensitive = true; if (success) { labelTest.Text = AddinCatalog.GetString("Test Succeeded."); } else { labelTest.Text = AddinCatalog.GetString("Test Failed: {0}.", error); } }); }