Comprehensive documentation for using dbfordevs effectively.
dbfordevs is a lightweight database management application for developers. This guide covers everything you need to know about using the application effectively.
Key Concepts:
- Connection: A saved database configuration allowing access to a specific database
- Query Tab: A workspace for writing and executing SQL queries
- Data Grid: The results display showing query output in table format
- Side Panel: The editing interface for modifying individual records
- Diff View: A comparison view showing all pending changes before committing
┌─────────────────────────────────────────────────────┐
│ Menu Bar (File, Edit, View, Help) │
├────────────┬──────────────────────────────────────┤
│ │ │
│ Sidebar │ Main Content Area │
│ │ │
│ Connections│ Query Editor │
│ - Conn 1 │ │
│ - Conn 2 │ Results Grid │
│ │ │
│ Databases │ │
│ - Tables │ │
│ - Views │ │
│ │ │
└────────────┴──────────────────────────────────────┘
The left sidebar contains:
Connections Section
- List of saved database connections
- Right-click for connection options
- Green dot indicates active connection
- Shows connection status (connected, error, connecting)
Database Trees (when connected)
- Schemas (for databases with schema support)
- Tables
- Views (with create/drop/DDL support)
- Indexes (with create/drop/DDL support)
- Users (with create/drop/password management)
- Roles (with create/drop/membership management)
- Functions/Procedures
Actions
- New Connection button (
Ctrl/Cmd+K) - Settings gear icon (
Ctrl/Cmd+,) - Help menu
Query Editor
- Write SQL queries
- Multiple tabs for organizing queries
- Syntax highlighting and code completion
- Execute button and options
Results Grid
- Displays query results
- Sortable and paginated
- Rows can be selected and copied
- Column resizing and reordering
Side Panel
- Appears when editing rows
- Shows field values and validation
- Save/Cancel buttons for changes
- Displays field types and constraints
Diff View
- Shows pending changes
- Color-coded: green (new), blue (modified), red (deleted)
- Review before committing changes
- Commit or discard all changes at once
Goal: Execute a simple SELECT query
- Select Connection: Click a connection in sidebar
- Open Editor: Click the main content area or query tab
- Write Query: Enter SQL in editor
SELECT id, name, email FROM users LIMIT 10;
- Execute: Press
Ctrl/Cmd+Enteror click Execute button - Review Results: Check grid for results and execution time
- Export (Optional): Copy results to clipboard or export to file
Time: ~1-2 minutes
Keyboard Efficiency: Open connection (1 click) → Type query → Ctrl/Cmd+Enter
Goal: Modify existing records in a table
- Navigate: Click table in sidebar to load data
- Review Data: Examine results in grid
- Select Row: Click the row you want to edit
- Edit: Click edit icon or double-click cell
- Modify: Change values in side panel
- Validate: System checks constraints automatically
- Review Changes: Click "View Changes" to see diff
- Commit: Click "Commit Changes" to save to database
- Verify: Check grid updates with new values
Before You Commit: Always review changes in diff view
Goal: Add new records to a table
- Select Table: Click table in sidebar
- Insert Row: Right-click in grid → "Insert Row"
- Fill Data: Enter values in side panel
- Validate: System checks required fields and types
- View Changes: Click "View Changes" to preview
- Commit: Save to database
- Verify: New row appears in grid
Tip: Use Tab to navigate between fields in insert form
Goal: Remove records from database
- Select Table: Click in sidebar
- Select Rows: Click row numbers to select (use Shift for ranges)
- Delete: Right-click → "Delete Rows"
- Confirm: Confirm deletion in dialog
- Review Changes: View diff to see marked-for-deletion rows
- Commit: Save deletions to database
Warning: Deletion is permanent. Review carefully before committing.
Goal: Execute multiple related queries
- New Tab: Click
+button to create new query tab - First Query: Write first statement
-- Get user count by status SELECT status, COUNT(*) as count FROM users GROUP BY status;
- Execute:
Ctrl/Cmd+Enter - Second Tab: Click
+for another tab - Second Query: Write related query
SELECT * FROM users WHERE status = 'active' ORDER BY created_at DESC;
- Execute:
Ctrl/Cmd+Enter - Compare: Click between tabs to compare results
Goal: Understand table structure and relationships
- Locate Table: Expand database tree in sidebar
- View Properties: Right-click table → "Properties"
- See all columns with types
- View indexes
- Check constraints and foreign keys
- View Diagram: Right-click table → "Diagram"
- See relationships visually
- Identify dependencies
- Understand cardinality
- View DDL: Right-click table → "View DDL"
- See CREATE TABLE statement
- Copy DDL for documentation
Goal: Analyze and optimize slow queries using execution plans
- Write Query: Enter your query in the editor
- View Plan: Click Explain button or press
Ctrl/Cmd+E - Review Tree: Examine the visual execution plan
- Red nodes indicate high-cost operations
- Look for sequential scans on large tables
- Enable ANALYZE: Toggle ANALYZE for actual metrics
- Compare estimated vs actual row counts
- See real execution times
- Identify Issues: Check for:
- Missing indexes (sequential scans)
- Inefficient joins
- Large sorts
- Optimize: Modify query or add indexes
- Compare: Re-run EXPLAIN to verify improvements
Goal: Import data from a CSV file into a table
- Select Table: Click target table in sidebar
- Open Import: Click Import button in grid toolbar
- Upload File: Select your CSV file
- Delimiter auto-detected
- Preview first rows
- Map Columns: Review column mappings
- Auto-mapped columns shown
- Adjust any incorrect mappings
- Skip unwanted columns
- Configure Options:
- Duplicate handling: Skip or Replace
- Batch size for performance
- Transaction mode for safety
- Run Import: Click Start Import
- Monitor Progress: Watch real-time status
- Review Results: Check success/error summary
Goal: Create a new table without writing DDL manually
- Open Wizard: Right-click schema → "Create Table"
- Set Basics: Enter table name and schema
- Define Columns:
- Add columns with types
- Set nullable, default values
- Mark primary key columns
- Add Constraints:
- Create foreign keys to other tables
- Add unique constraints
- Add check constraints
- Create Indexes: Add indexes for frequently queried columns
- Preview DDL: Review generated SQL
- Execute: Click "Create Table"
- Verify: New table appears in sidebar
Goal: Save and reuse frequently used queries
- Write Query: Create a useful query you'll reuse
- Save Bookmark: Click Save as Bookmark or
Ctrl/Cmd+B - Organize:
- Name the bookmark descriptively
- Choose or create a folder
- Add description (optional)
- Access Later: Click Bookmarks dropdown
- Search: Use search box to find bookmarks
- Use Template Variables: For dynamic queries
SELECT * FROM {{table}} WHERE status = '{{status}}'
- Manage: Open Bookmark Manager to reorganize, edit, or delete
Goal: Create and manage database views
- Browse Views: Expand Views section in sidebar
- View Data: Click a view to query its data
- View DDL: Right-click → View DDL to see the definition
- Create View:
- Right-click Views → Create View
- Enter name and SELECT statement
- Choose "Or Replace" to update existing
- Click Create
- Drop View: Right-click → Drop View (confirm when prompted)
Tip: Use views to simplify complex queries or restrict data access.
Goal: Create indexes to optimize query performance
- Identify Slow Query: Use EXPLAIN to find sequential scans
- Browse Indexes: Expand Indexes section in sidebar
- View Index DDL: Right-click index → View DDL
- Create Index:
- Right-click Indexes → Create Index
- Select the table
- Choose columns to index
- Enable Unique if needed
- Click Create
- Verify: Re-run EXPLAIN to confirm index usage
- Drop Unused: Right-click unused index → Drop Index
Best Practices:
- Index columns used in WHERE clauses
- Index foreign key columns
- Avoid over-indexing (slows writes)
Goal: Create users and manage permissions
- View Users: Expand Users section in sidebar
- Create User:
- Right-click Users → Create User
- Enter username and password
- Click Create
- Create Role:
- Expand Roles section
- Right-click → Create Role
- Enter role name
- Grant Permissions:
- Right-click user/role → Manage Permissions
- Click Grant Permission
- Select privilege and options
- Click Grant
- Assign Role to User:
- Right-click role → Add Member
- Select the user
- Change Password: Right-click user → Change Password
Goal: Find and reuse past queries
- Open History: Click the History icon in sidebar
- Search: Type keywords to filter queries
- Filter:
- By date range (Today, Week, Month)
- By connection
- By success/failure
- By execution time
- Load Query: Click a history item to load it in editor
- Favorite: Click the star to mark frequently used queries
- View Stats: Check execution statistics at top of panel
- Export: Click Export for JSON or CSV backup
- Clean Up: Use Settings → Advanced to configure auto-cleanup
Goal: Connect to a database behind a firewall
- New Connection: Click "New Connection"
- Basic Info: Enter database type and name
- SSH Tab: Click the SSH tab
- Enable Tunnel: Check "Enable SSH Tunnel"
- Configure SSH:
- SSH Host: Your jump server
- SSH Port: Usually 22
- Username: Your SSH username
- Auth: Password or Private Key
- Connection Tab: Enter internal database hostname
- Test: Click "Test Connection"
- Save: Store the connection for future use
Goal: Organize many connections for easier management
- Create a Group:
- Right-click in the connections area
- Select "Create Group"
- Name it (e.g., "Production", "Development")
- Add Connections to Group:
- Drag existing connections into the group
- Or create new connections directly in the group
- Add Tags:
- Right-click a connection
- Select "Add Tag"
- Enter a tag name (e.g., "API", "Reporting")
- Filter by Tag: Click a tag to filter the connection list
- Color Coding: Tags appear as colored labels for visual identification
Tip: Use groups for environments and tags for projects/teams.
Goal: Identify differences between two database schemas
- Open Schema Diff: Click the Schema Diff button in the toolbar
- Select Source:
- Choose the source connection
- Select the schema to compare from
- Select Target:
- Choose the target connection
- Select the schema to compare against
- Run Comparison: Click "Compare"
- Review Results:
- Green items: Exist in source only
- Red items: Exist in target only
- Yellow items: Exist in both but differ
- View Details: Click any item to see detailed differences
- Generate Scripts: Export migration scripts if needed
Use Cases:
- Verify deployment success
- Identify schema drift
- Plan database migrations
Goal: Keep important query tabs always visible
- Pin a Tab: Right-click a query tab → "Pin Tab"
- Pinned tabs:
- Show a pin icon
- Move to the left side
- Cannot be closed with Ctrl/Cmd+W
- Unpin: Right-click → "Unpin Tab"
- Tab Context Menu: Right-click for options like:
- Close Other Tabs
- Close Tabs to the Right
- Duplicate Tab
Goal: Connect to and query a MongoDB database
- New Connection: Click "New Connection"
- Select MongoDB: Choose MongoDB from database type
- Connection String: Enter
mongodb://user:pass@host:port/database - Connect: Click Test and Save
- Browse Collections: Expand the connection to see collections
- View Documents: Click a collection to view documents
- Query: Use MongoDB query syntax in the editor
{ "status": "active", "age": { "$gt": 25 } }
- Edit Documents: Click a document to edit in the side panel
Goal: Connect to and manage a Redis database
- New Connection: Click "New Connection"
- Select Redis: Choose Redis from database type
- Connection: Enter host and port (default: 6379)
- Connect: Click Test and Save
- Browse Keys: Expand the connection to see keys
- View Values: Click a key to see its value and type
- Supported Types:
- Strings
- Hashes
- Lists
- Sets
- Sorted Sets
- TTL Management: View and set key expiration times
Goal: Connect to and query an Apache Cassandra database
- New Connection: Click "New Connection"
- Select Cassandra: Choose Cassandra from database type
- Connection Details: Enter contact points and port
- Keyspace: Optionally specify a default keyspace
- Connect: Click Test and Save
- Browse: Expand to see keyspaces and tables
- Query: Use CQL in the editor
SELECT * FROM users WHERE user_id = 'abc123';
Problem: Queries return thousands of rows, affecting performance
Solutions:
-
Use LIMIT Clause
SELECT * FROM large_table LIMIT 100;
-
Filter with WHERE
SELECT * FROM large_table WHERE created_date > '2024-01-01';
-
Use Pagination Settings
- Go to Settings → Grid
- Increase "Rows Per Page" to 100+
- Use pagination buttons to navigate
-
Aggregate Data
SELECT category, COUNT(*) FROM items GROUP BY category;
Execute multiple statements in one query:
-- Insert multiple records
INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');
INSERT INTO users (name, email) VALUES ('Bob', 'bob@example.com');
INSERT INTO users (name, email) VALUES ('Charlie', 'charlie@example.com');
-- Verify insertion
SELECT COUNT(*) FROM users;Each statement executes separately, with results for each shown in order.
For databases supporting transactions:
BEGIN TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;Or if something goes wrong:
ROLLBACK;-- List all schemas
SELECT schema_name FROM information_schema.schemata;
-- Get table info
SELECT column_name, data_type, is_nullable
FROM information_schema.columns
WHERE table_schema = 'public' AND table_name = 'users';-- Show all databases
SHOW DATABASES;
-- Show table structure
DESCRIBE table_name;
-- Show table creation statement
SHOW CREATE TABLE table_name;-- List all tables
SELECT name FROM sqlite_master WHERE type='table';
-- Get table info
PRAGMA table_info(table_name);-- List all tables
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES;
-- Get column info
SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'table_name';-- List all tables in current schema
SELECT table_name FROM user_tables;
-- List all tables you have access to
SELECT owner, table_name FROM all_tables WHERE owner = 'SCHEMA_NAME';
-- Get column info
SELECT column_name, data_type, nullable, data_length
FROM user_tab_columns
WHERE table_name = 'TABLE_NAME';
-- Get table DDL
SELECT DBMS_METADATA.GET_DDL('TABLE', 'TABLE_NAME') FROM dual;
-- View execution plan
EXPLAIN PLAN FOR SELECT * FROM table_name WHERE id = 1;
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);Oracle Connection Format:
//hostname:port/service_name
Example: //oracle-server.example.com:1521/ORCL
Scenario: You have a connection string from your application config
- Open the New Connection dialog (
Ctrl/Cmd+K) - Paste your connection string in the connection string field
- dbfordevs auto-detects the database type and fills in the fields
- Review and adjust the parsed settings
- Click "Test Connection" to verify
Supported formats include PostgreSQL URLs, MySQL URLs, MSSQL key-value strings, MongoDB connection strings, and Redis URLs.
Best Practices:
-
Naming Convention: Use descriptive names
- ✅ "Production PostgreSQL"
- ❌ "db1"
-
Organization: Group by environment
- Development connections
- Staging connections
- Production connections
-
Separate Tabs: Use different tabs per connection
- Tab 1: "Dev - User Queries"
- Tab 2: "Prod - Reports"
- Tab 3: "Staging - Testing"
-
Duplicate for Testing: Test queries safely
- Duplicate production connection → "Production-Test"
- Run tests on copy
- Delete test connection when done
Export to CSV:
- Execute query to get data
- Select all rows (
Ctrl/Cmd+A) - Copy to clipboard (
Ctrl/Cmd+C) - Open spreadsheet application
- Paste data
Export via Database Tools:
-- PostgreSQL: Copy to CSV
COPY (SELECT * FROM users) TO STDOUT WITH CSV HEADER;
-- MySQL: Into Outfile
SELECT * FROM users
INTO OUTFILE '/tmp/users.csv'
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';Identify slow queries:
- Note execution time displayed after query runs
- If > 1 second, optimization needed
- Check if table has proper indexes
- Use EXPLAIN to see query plan (if supported)
-- PostgreSQL
EXPLAIN SELECT * FROM large_table WHERE user_id = 1;
-- MySQL
EXPLAIN SELECT * FROM large_table WHERE user_id = 1;Optimization Strategies:
- Add indexes to frequently queried columns
- Use proper JOIN syntax
- Avoid SELECT * when possible
- Use column aliases for readability
- Partition large tables if supported
Use keyboard shortcuts to navigate faster:
Ctrl/Cmd+K: Quick connection switchingCtrl/Cmd+T: New query tabCtrl/Cmd+W: Close current tabAlt+Up/Down: Navigate between grids
Save common query patterns:
-- User lookup template
SELECT id, name, email, created_at
FROM users
WHERE id = ?;
-- Sales report template
SELECT DATE(order_date) as date, COUNT(*) as orders, SUM(total) as revenue
FROM orders
GROUP BY DATE(order_date)
ORDER BY date DESC;Store in separate query tabs and modify as needed.
Working with wide tables:
- Horizontal Scroll: Use arrow keys to scroll columns
- Column Hiding: Right-click column header
- Column Reordering: Drag column headers (if supported)
- Freeze Columns: Keep key columns visible while scrolling
Use your OS keyboard macro features:
Windows/Linux: AutoHotkey for repeated queries macOS: Keyboard Shortcuts app
Create macro for common connection setup:
Ctrl+Alt+P → Connect to Production
→ Ctrl+T → New Tab
→ Type common query
Before committing any changes:
- Click "View Changes"
- Understand what will be written to database
- Scan for unintended modifications
- Check totals match expectations
- Only then click "Commit"
Test changes without risk:
- Use test database copy if available
- Or create test schema:
CREATE SCHEMA test_changes; - Run modifications on test version
- Review results
- Replay on production once confident
Checklist:
- Database service is running
- Host and port are correct
- Username and password are correct
- Database name is correct
- Firewall allows connection
- Network connectivity is available
- No special characters in password need escaping
Verification Steps:
-
Test with native client:
# PostgreSQL psql -h localhost -U postgres -d mydb # MySQL mysql -h localhost -u root -p mydb # SQLite sqlite3 mydb.db
-
Check network/firewall:
ping host telnet host port
Causes and Solutions:
-
Network latency
- Try from machine closer to database
- Check network stability
-
Database timeout settings
- Increase timeout in Settings
- Check database server timeout config
-
Firewall blocking
- Verify port is open
- Check security group rules (cloud)
Diagnosis:
- Check SQL against database documentation
- Verify table and column names (case-sensitive in some databases)
- Ensure semicolon at end
- Check for unsupported features for database version
- Try query in database native client
Example Error:
Error: column "user_id" does not exist
Solution:
- Right-click table → Properties
- Verify column name (might be
userIdoruser_Id) - Update query with correct name
Checklist:
- Verify table has data:
SELECT COUNT(*) FROM table; - Check WHERE clause conditions
- Verify column names and spelling
- Check data types match in WHERE clause
- Try without filters:
SELECT * FROM table LIMIT 1;
Analysis:
- Check execution time feedback
- If > 5 seconds, likely performance issue
- For very large tables:
- Add LIMIT
- Add WHERE clause
- Check indexes exist
Optimization:
-- Before (slow)
SELECT * FROM 10_million_row_table;
-- After (fast)
SELECT * FROM 10_million_row_table WHERE year = 2024 LIMIT 100;Reasons:
- Field is part of primary key
- Field is a generated/computed column
- Database doesn't support modification for this column type
- Insufficient permissions
Solution:
Check table properties to understand column constraints.
Error: "Foreign key constraint failed"
Diagnosis:
- Value violates foreign key relationship
- Value violates unique constraint
- Value violates check constraint
Solution:
- Review table properties
- Check related tables for valid values
- Ensure referenced record exists
- Fix value to satisfy constraint
Checklist:
- Did you click "Commit Changes"?
- Was commit successful (no error message)?
- Refresh grid to see updated data
- Check database directly from another client
- Review pending changes didn't exceed transaction size limit
Solutions:
- Use pagination: Go to Settings → Grid
- Increase "Rows Per Page"
- Use LIMIT in query
- Filter data with WHERE clause
- Disable sorting on large columns
Fix:
- Open Settings (
Ctrl/Cmd+,) - Go to "Appearance"
- Adjust "Font Size" or "UI Scale"
- Restart application if needed
Solution:
- Open Settings
- Go to "Appearance"
- Select theme
- Restart application
- Or switch theme twice (sometimes needed)
Optimization steps:
- Close unused query tabs
- Clear result grids with large datasets
- Reduce pagination size temporarily
- Close sidebar panel temporarily
- Restart application
- Check available system RAM
Solutions:
- Turn off syntax highlighting temporarily (Settings)
- Disable code completion (Settings)
- Reduce editor font size
- Split large queries into multiple tabs
- Restart application
Q: Can I use dbfordevs with multiple databases at once?
A: Yes! Each connection maintains its own session. Open multiple query tabs and switch between connections as needed.
Q: Is my data safe? Are connections encrypted?
A: Connections use standard database connection protocols (SSL/TLS when supported). Saved passwords are stored securely in your system's credential storage. Always use encrypted connections in production.
Q: Can I export my queries?
A: Yes. Copy query text from editor and save to file. Or export results using the export feature.
Q: Does dbfordevs support stored procedures?
A: Yes. Type CALL procedure_name() or EXECUTE procedure_name depending on your database.
Q: Can I use transactions?
A: Yes. Begin transaction, run queries, then commit or rollback. Some databases default to auto-commit, so BEGIN may be necessary.
Q: How do I organize many connections?
A: Use connection groups and tags. Create groups for environments (Dev, Staging, Prod) and add tags for projects or teams. You can also filter connections by tag.
Q: Can I compare schemas between databases?
A: Yes! Use the Schema Diff feature to compare schemas between two connections. It shows added, removed, and modified objects with detailed differences.
Q: What themes are available?
A: dbfordevs includes Light, Dark, Nordic Light, Nordic Dark, Solarized Light, Solarized Dark, and System (auto) themes.
Q: How do I pin tabs?
A: Right-click a query tab and select "Pin Tab". Pinned tabs stay on the left and can't be accidentally closed.
Q: Can I connect to RDS, Azure SQL Database, or other cloud databases?
A: Yes. Use the cloud provider's connection string. Make sure network rules allow connection.
Q: Does dbfordevs work with database clusters?
A: Yes. Connect to cluster endpoint with proper credentials. Features may vary depending on cluster setup.
Q: Can I connect to databases behind a VPN?
A: Yes. Configure VPN connection on your system first, then connect through dbfordevs normally.
Q: How do I connect to Oracle databases?
A: Select Oracle as the database type and use the Easy Connect format: //host:port/service_name. Example: //db.example.com:1521/ORCL.
Q: Can I use SSH tunneling for secure connections?
A: Yes. In the connection dialog, go to the SSH tab and enable SSH tunneling. You can authenticate with password or private key.
Q: How do I connect to MongoDB?
A: Select MongoDB as the database type and enter the connection string: mongodb://user:pass@host:port/database. You can browse collections and query documents using JSON syntax.
Q: How do I connect to Redis?
A: Select Redis as the database type and enter the host and port. You can browse keys, view values by type (strings, hashes, lists, sets, sorted sets), and manage TTLs.
Q: How do I connect to Cassandra?
A: Select Cassandra as the database type, enter the contact points and port. You can browse keyspaces and tables, and run CQL queries.
Q: Does dbfordevs support Oracle Wallet authentication?
A: Yes. In the Oracle connection dialog, you can configure Oracle Wallet for secure authentication without storing passwords.
Q: Can I undo changes after committing?
A: No. Once committed, changes are permanent. Always review diff before committing.
Q: Can I bulk insert data?
A: Yes. Write SQL with multiple INSERT statements:
INSERT INTO users (name) VALUES ('Alice'), ('Bob'), ('Charlie');Q: Can I edit data from a JOIN query?
A: Limited. Simple single-table updates work. Complex JOINs may require writing UPDATE query.
Q: How do I import data from a CSV file?
A: Click the Import button in the data grid toolbar, select your CSV file, map columns, and start the import. The wizard guides you through the process.
Q: Can I save and reuse queries?
A: Yes. Use Query Bookmarks. Click "Save as Bookmark" or press Ctrl/Cmd+B, then access saved queries from the Bookmarks dropdown.
Q: How do I format my SQL?
A: Press Shift+Alt+F or click the Format button in the editor toolbar. You can also select specific text to format only that portion.
Q: Why is my query slow?
A: Check database indexes, use EXPLAIN plan, add WHERE clause, use LIMIT. Cloud databases may have latency.
Q: What's the maximum number of rows I can view?
A: Theoretically unlimited, but practical limit is 10,000+ rows. Use pagination for larger sets.
Q: Can I cache query results?
A: Results display instantly if query runs again. No explicit cache, but repeated queries are fast.
Q: Why did my connection drop?
A: Database timeout, network issues, or server restart. Reconnect from sidebar.
Q: Where are my saved connections stored?
A: In your system's local storage (encrypted). On macOS typically in ~/Library/Application Support/dbfordevs/.
Q: How do I report a bug?
A: Report on GitHub with detailed steps to reproduce, your OS, database type, and dbfordevs version.
Still need help? Check the Features Guide or Getting Started guide.