Download Latest Version editdb-gui.exe (239.9 kB) Google Add to Preferred Sources
Home
Name Modified Size InfoDownloads / Week
EditDB.zip 2026-09-30 21.8 kB
README.md 2026-09-30 16.7 kB
EditDB.app.zip 2026-09-30 337.9 kB
editdb-gui.exe 2026-09-30 239.9 kB
editdb-cli 2026-09-30 89.3 kB
editdb-cli.exe 2026-09-30 218.4 kB
editdb.exe 2026-09-30 75.8 kB
Totals: 7 Items   999.8 kB 0

EditDB

A fast, typed database table editor with relational lookups, schema management, live filtering, column header sorting, and CSV import. Built as a single coherent database system across desktop, command line, vintage MS-DOS, and modern web platforms.


Available Editions

EditDB is available in six tailored editions sharing identical .EDB database files:

Edition Executable / Path Platform / Environment Description
macOS Cocoa GUI EditDB.app macOS (Apple Silicon / Intel) Native Cocoa app with toolbar, sheets, popover relational pickers, and sorting.
Windows 11 GUI editdb-gui.exe Windows 10 / 11 (64-bit) Modern Win32 application with ListView controls, custom dialogs, and native file pickers.
MS-DOS 6.22 editdb.exe / floppy.img MS-DOS 6.22 / DOSBox-X 16-bit real-mode text UI with direct video memory rendering and mouse driver support.
macOS Terminal TUI editdb-cli macOS Terminal / zsh Native ncurses full-screen interactive console application.
Windows Console TUI editdb-cli.exe Windows Terminal / cmd.exe Native Win32 Console interactive text-mode application.
PHP Web Edition EditDB/index.php Web Browser (PHP 7.4 - 8.x) Zero-dependency responsive web application with CSS Grid and interactive modals.

Launching EditDB

1. macOS Cocoa GUI

Double-click EditDB.app in Finder or launch it from terminal:

open EditDB.app

You can also launch it with an explicit database file:

open -a EditDB.app address.EDB

2. Windows 11 GUI

Double-click editdb-gui.exe in File Explorer, or run:

editdb-gui.exe address.EDB

3. macOS & Windows Command Line (TUI)

Run from your terminal shell:

# Open an existing database or prompt for name
./editdb-cli address.EDB

# Create a new table or open by name (resolves to ./contacts.EDB)
./editdb-cli contacts

# Directly import a CSV file into a new table
./editdb-cli --import customers.csv

4. MS-DOS 6.22

On native hardware, virtual machines (QEMU, VirtualBox), or DOSBox-X:

C:\> EDITDB ADDRESS.EDB
C:\> EDITDB CUSTOMER.CSV
C:\> EDITDB

To run directly in DOSBox-X from the workspace:

dosbox-x -c "mount c ow-dos" -c "mount d ." -c "d:" -c "editdb.exe address.edb"

Or boot the pre-configured floppy disk image floppy.img which contains EDITDB.EXE, sample databases, and CSV files.

5. PHP Web Edition

Start the built-in PHP development server inside EditDB/:

cd EditDB
php -S localhost:8000

Open http://localhost:8000/index.php in your web browser. To deploy to Apache or Nginx with mod_userdir (e.g. ~username/EditDB/), copy the EditDB/ folder to your server's public_html directory.


Database Architecture & File Format

EditDB tables are stored in human-readable, UTF-8-compatible CSV files with an .EDB extension.

Structure of an .EDB File

EDITDB,1
TABLE,person
FIELD,pid,SERIAL,Person ID,Y,Y
FIELD,first_name,CHAR,First name,Y,N
FIELD,last_name,CHAR,Last name,Y,N
FIELD,birth_date,DATE,Date of birth,Y,N
FIELD,address_id,LOOKUP,Address reference,address.EDB,aid,Y,N
DATA
1,John,Doe,1985-04-12,1
2,Jane,Smith,1992-11-23,2
  1. Header: EDITDB,1 declares format version 1.
  2. Table Declaration: TABLE,<table_name> names the active relation.
  3. Field Specifications: FIELD,<name>,<type>,<description>[,lookup_path,lookup_field],<visible>,<fixed>
  4. Data Marker: DATA indicates the start of record rows.
  5. Records: Standard comma-separated rows. Double quotes are applied automatically when field values contain commas or quotes.

Field Types

Type Format & Rules Description
CHAR Text string (up to 255 chars) Free-form alphanumeric characters.
INT Signed whole numbers 64-bit integer values (e.g. -42, 10000000000). Strips thousand commas on import.
REAL Signed decimal numbers Standard floating-point numbers (e.g. 3.14159, -0.005).
DATE Strict YYYY-MM-DD Validates month ranges (01–12), day ranges per month, and leap years. Fallback default is 1900-01-01.
SERIAL Automatic positive integer Read-only sequence primary key generated automatically (1, 2, 3...).
LOOKUP Reference to foreign SERIAL Foreign key referencing a SERIAL field in another .EDB table. Automatically expands joined fields in views.

Field Attributes

  • Visible (Y/N): Controls whether the column is shown in grid/table views. Hidden fields remain intact in data records and forms.
  • Fixed (Y/N): Pins columns to the left side of the screen or window. When scrolling right through wide tables, fixed columns stay stationary like frozen panes in a spreadsheet.

Detailed Program Usage

1. Main Table View & Navigation

EDITDB  TABLE: address  ROWS: 5  FIELDS: 5                       SORT: [aid ▲]
 aid  Address                Postal code  City           Country
-------------------------------------------------------------------------------
   1  100 Main Street        10001        New York       United States
   2  221B Baker Street      NW1 6XE      London         United Kingdom
   3  10 Market Square       94105        San Francisco  United States
   4  42 Park Avenue         02138        Cambridge      United States
   5  12 High Street         CB2 1TN      Cambridge      United Kingdom
===============================================================================
[Up Row]  [Down Row]  [Left Field]  [Right Field]  [Enter Edit]  [A Add]  [I Import]
[F Filter]  [C Fields]  [R Order]  [N New]  [O Open]  [S Save]  [W Save As]  [Q Quit]
  • Row Navigation: Use ↑ and ↓ (or Page Up / Page Down) to move the selection cursor across records.
  • Column Scrolling: Use ← and → to scroll columns horizontally. Fixed/pinned columns stay visible on the left side while scrollable columns slide underneath.
  • Mouse Control: In GUI editions and in DOS/CLI (with mouse driver loaded), click any row to select it, double-click to edit, or click any action button at the bottom.

2. Searching & Live Filtering

Filter records instantly across all fields without altering stored database contents:

  • GUI & Web Editions: Type directly into the search bar at the top of the window. The table filters in real time as you type. Clear the box to restore all records.
  • DOS & Console TUI: Press F. A prompt appears: Filter (Enter to apply, empty to clear):. Type your search text and press Enter. The status bar displays Filter: "..." (N records). Press F and Enter on an empty prompt to clear the filter.

3. Column Sorting

Sort table data ascending or descending by any field:

  • macOS, Windows GUI & Web Editions: Click any column header to sort by that column ascending ($\blacktriangle$). Click the same header again to invert sort order to descending ($\blacktriangledown$).
  • DOS & Console TUI: Press R (Order). Select the desired field, choose Ascending or Descending, and press Enter.
  • INT and SERIAL fields sort numerically (1, 2, 10 instead of 1, 10, 2).
  • REAL fields sort by numeric floating-point value.
  • DATE fields sort chronologically (YYYY-MM-DD).
  • CHAR fields sort alphabetically case-insensitively.

4. Adding & Editing Records

Adding a Record

  • GUI & Web: Click Add Record or press Cmd+N / Ctrl+N.
  • DOS & TUI: Press A. A dedicated multi-line form displays each field with its name and full descriptive label:
EDITDB  ADD RECORD: address
-------------------------------------------------------------------------------
aid: SERIAL is generated automatically

Address:
> 12 High Street

Postal code:
> CB2 1TN

City:
> Cambridge

Country:
> United Kingdom
===============================================================================
[Up Select]  [Down Select]  [Enter Edit]  [V Select Lookup]  [S Save]  [Esc Cancel]

Modifying Fields

  1. Move between fields using ↑ and ↓ or click the input line.
  2. Press Enter to type or update a value. EditDB validates the value against the field's declared type upon hitting Enter.
  3. To save the record, press S (or click Save).
  4. To discard changes, press Esc (or click Cancel).

[!NOTE] SERIAL primary keys are generated automatically upon saving and cannot be modified manually.


5. Working with Relational Lookups

A LOOKUP field creates a relationship linking rows in the current table to unique records in another .EDB table:

erDiagram
    PERSON {
        SERIAL pid PK
        CHAR first_name
        CHAR last_name
        DATE birth_date
        LOOKUP address_id FK
    }
    ADDRESS {
        SERIAL aid PK
        CHAR address
        CHAR pcode
        CHAR city
        CHAR country
    }
    PERSON }|--|| ADDRESS : "address_id references aid"

How Lookups Render in Table Views

When a table contains a LOOKUP field (e.g. address_id referencing aid in address.EDB), EditDB automatically resolves the relationship:

  1. The raw foreign key value (aid) is displayed.
  2. All non-serial columns from the referenced row (address, pcode, city, country) are dynamically displayed alongside the record in same-row joined columns.
  3. If the foreign table is modified or foreign records are updated, the main table displays the refreshed data automatically.

Interactive Lookup Record Selector

When adding or editing a record with a LOOKUP field:

  • GUI & Web Editions: An interactive picker dialog/popover displays all records from the foreign table. Click any row to link it.
  • DOS & Console TUI: Navigate to the LOOKUP field and press Enter or V (Select Lookup). A full-screen selector appears showing the foreign database table:
  • Use ↑ and ↓ to highlight the referenced record.
  • Press Enter to select it and return the serial key to the record form.
  • Press E on a highlighted record to edit the foreign record directly in its source database without leaving your current workflow!

6. Schema & Field Management

Press C (or choose Manage Fields / Cmd+Shift+S) to open the Schema Editor:

EDITDB  FIELDS: address (5 fields)
 #  Field Name         Type    Vis Fix Description
-------------------------------------------------------------------------------
 1  aid                SERIAL   Y   Y  Address ID
 2  address            CHAR     Y   N  Address
 3  pcode              CHAR     Y   N  Postal code
 4  city               CHAR     Y   N  City
 5  country            CHAR     Y   N  Country
===============================================================================
[Up Select]  [Down Select]  [Enter Edit]  [A Add Field]
[U Move Up]  [D Move Down]  [I Import CSV]  [Q Back]
  • Add Field (A): Prompts for field name, type, description, and visibility/fixed flags. If the table already has records, you are prompted to provide a default value to populate existing rows (or auto-sequenced serials if choosing SERIAL).
  • Edit Field (Enter): Modify name, type, description, visibility, fixed status, or lookup reference table. When changing types, EditDB validates existing records against the new type.
  • Reorder Fields (U / D): Press U (Move Up) or D (Move Down) to change the physical order of columns in the database.
  • Exit (Q / Esc): Returns to table view with updated schema layout.

7. CSV Import Function

EditDB provides a robust CSV import facility that reads raw comma-separated files, detects column data types, sanitizes field identifiers, and converts data into a structured .EDB table.

Capabilities & Automatic Conversions

  1. Header Parsing: The first line is parsed for source column headers. Illegal characters and spaces are converted to clean snake_case identifiers, and duplicate column names are suffixed automatically (field_2, field_3).
  2. Smart Type Detection: Analyzes the first 200 data rows to infer whether a column contains INT, REAL, DATE, or CHAR data.
  3. Number Formatting: Strips commas used as thousand separators (e.g. "24,699,564,032" is converted to clean integer 24699564032).
  4. Date Normalization: Standardizes calendar dates to YYYY-MM-DD. Missing values, "N/A", or dashes ("-") are normalized to 1900-01-01.
  5. Unicode BOM Handling: Automatically detects and strips UTF-8 byte-order marks (EF BB BF) at the beginning of files.

Running a CSV Import

  • macOS Cocoa GUI: Choose File → Import CSV... (Cmd+I) or click Import in the toolbar.
  • Windows GUI: Choose File → Import CSV... (Ctrl+I) or drag and drop a .csv file onto the window.
  • DOS & Console TUI:
  • Run with file argument: editdb.exe customers.csv
  • Or run with flag: editdb.exe --import customers.csv
  • Or inside table view / schema manager, press I (Import).
  • PHP Web Edition: Click 📥 Import CSV File in the top navigation bar.

In all editions, an interactive schema review screen is presented before records are imported:

EDITDB  IMPORT CSV: CUSTOMERS (5 fields, 250 rows)
Field Name         Type    Description          Sample Value
-------------------------------------------------------------------------------
cust_id            INT     Customer ID          101
company_name       CHAR    Company Name         Acme Industrial
signup_date        DATE    Registration Date    2026-05-15
credit_limit       REAL    Credit Line Limit    15000.00
country            CHAR    Country Region       United States
===============================================================================
[Up Select]  [Down Select]  [Enter Edit Field]  [T Table Name]  [I Execute Import]  [Esc Cancel]

Press Enter on any field to adjust its target name, type, or description. Press T to change the target table name. When ready, press I to execute the import and save the new .EDB file.


Keyboard & Action Reference

Action macOS Cocoa GUI Windows 11 GUI DOS / Console TUI PHP Web Edition
Edit Record Double-Click / Cmd+E Double-Click / Enter Enter Click ✏️ Edit
Add Record Cmd+N Click Add Record A Click ➕ Add Record
Delete Record Cmd+Backspace Click Delete Record N/A (Form clear) Click 🗑️ Delete
Sort Column Click Header Click Header R (Order) Click Header
Live Filter Search field Search field F Search input
Manage Fields Cmd+Shift+S Click Schema C Click ⚙️ Fields
Move Field Up Click Move Up Click Move Up U Click ▲ Up
Move Field Down Click Move Down Click Move Down D Click ▼ Down
Import CSV Cmd+I Ctrl+I I Click 📥 Import CSV
Save Database Cmd+S Ctrl+S S Click 💾 Save
Save As Cmd+Shift+S Ctrl+Shift+S W Click ⬇ Download
New Database Cmd+Alt+N Click New Table N Click 📄 New Table
Open Database Cmd+O Ctrl+O O Table dropdown
Quit Cmd+Q Alt+F4 Q Close tab

Technical Specifications & Limits

  • String Storage: All record values are dynamically allocated and resized in heap memory (db_record_set_value).
  • Maximum Buffer Limits:
  • DB_NAME_SIZE: 32 bytes (Field identifiers)
  • DB_TABLE_SIZE: 48 bytes (Table names)
  • DB_DESC_SIZE: 80 bytes (Field descriptions)
  • DB_VALUE_SIZE: 256 bytes (Single record field value)
  • DB_PATH_SIZE: 128 bytes (File paths)
  • DOS Compatibility: Builds with Open Watcom v2 in Large memory model (-ml), keeping stack usage under 16 KB and operating within real-mode MS-DOS conventional 640 KB memory constraints.
Source: README.md, updated 2026-09-30