<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Jan Prochazka</title>
    <description>The latest articles on Forem by Jan Prochazka (@janproch).</description>
    <link>https://forem.com/janproch</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F574291%2F7215f671-d8ac-44b4-b5a1-984a2d4e4e48.jpeg</url>
      <title>Forem: Jan Prochazka</title>
      <link>https://forem.com/janproch</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/janproch"/>
    <language>en</language>
    <item>
      <title>Database GUIs in JavaScript</title>
      <dc:creator>Jan Prochazka</dc:creator>
      <pubDate>Thu, 22 Sep 2022 10:27:33 +0000</pubDate>
      <link>https://forem.com/janproch/database-guis-in-javascript-2dpb</link>
      <guid>https://forem.com/janproch/database-guis-in-javascript-2dpb</guid>
      <description>&lt;p&gt;If you want to access your database, eg. during the development process, you have many options, which tool to choose. Traditional tools are often written in Java, C++ or even Delphi and they use good old JDBC, ODBC or ADO.NET drivers for accessing database.&lt;/p&gt;

&lt;p&gt;If you are JavaScript, especially NodeJS developer, maybe better option for you could be some of new tools written in JavaScript, because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;These tools use the same drivers as you in your application, so if you have any problem with DB in your app, you could test it in GUI and obtain similar results&lt;/li&gt;
&lt;li&gt;Mostly they have similar visual style as VS Code (IDE, which is used by many JS developers)&lt;/li&gt;
&lt;li&gt;Some of them could export JS scripts with export and import jobs&lt;/li&gt;
&lt;li&gt;Almost all tools are open-source. You could check source code and get inspiration, how to solve eg. connection related problems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This list contains 5 database clients, all written in JavaScript.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Name&lt;/th&gt;
&lt;th&gt;GitHub&lt;/th&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;th&gt;License&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://azure.microsoft.com/products/data-studio" rel="noopener noreferrer"&gt;Azure Data Studio&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/microsoft/azuredatastudio" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;VS Code&lt;/td&gt;
&lt;td&gt;Microsoft&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://dbgate.org" rel="noopener noreferrer"&gt;DbGate&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/dbgate/dbgate" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Svelte&lt;/td&gt;
&lt;td&gt;MIT&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://www.beekeeperstudio.io" rel="noopener noreferrer"&gt;Beekeeper Studio&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/beekeeper-studio/beekeeper-studio" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Vue&lt;/td&gt;
&lt;td&gt;Commercial/GPL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://antares-sql.app" rel="noopener noreferrer"&gt;Antares SQL&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/antares-sql/antares" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Vue&lt;/td&gt;
&lt;td&gt;MIT&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://sqlectron.github.io" rel="noopener noreferrer"&gt;Sqlectron&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/sqlectron/sqlectron-gui" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;React&lt;/td&gt;
&lt;td&gt;MIT&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;There are some characteristics common to all tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;use JavaScript, TypeScript and NodeJS&lt;/li&gt;
&lt;li&gt;use ElectronJS as application builder&lt;/li&gt;
&lt;li&gt;avalaible for Windows, Linux and Mac (but only some of them supports Apple M1 processor)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Azure Data Studio
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://azure.microsoft.com/products/data-studio/" rel="noopener noreferrer"&gt;Azure Data Studio&lt;/a&gt; is build directly on VS Code technology, so the imitation of VS Code look &amp;amp; feel is the best of all tools. It is primarily designed for Microsoft SQL Server, but you could install extensions for limited number of other databases (but MySQL is not supported). If you were satisfied with Microsoft Management Studio and you search something more modern or something running under Linux and Mac, you will probably satisfied with ADS. But if you want to quick search and understand your data (eg. use filters and ordering without manual SQL coding), try other tool. Is also supports features like explain SQL (but it seems a bit worse than in SQL Management Studio) or Jupyter notebooks. ADS is maintained by Microsoft and is free and open-source.&lt;/p&gt;

&lt;p&gt;Supported databases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Microsoft SQL Server&lt;/li&gt;
&lt;li&gt;Postgre SQL (via extension)&lt;/li&gt;
&lt;li&gt;Oracle (via extension)&lt;/li&gt;
&lt;li&gt;CosmoDB (via extension)&lt;/li&gt;
&lt;li&gt;MongoDB (via extension)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F913cx9l1ncudiusp4yrs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F913cx9l1ncudiusp4yrs.png" alt="ADS screenshot"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  DbGate
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://dbgate.org" rel="noopener noreferrer"&gt;DbGate&lt;/a&gt; is the most feature rich client from this list. It uses multi-connection and multi-database in one window paradigm, with tabs labeled with asociated database. It has interesting data-navigating features, like master/detail and form views, and excel-like data editing. Also you could use features which you may know from classical clients, like query designer or ER diagram viwer. It is the only client from this list, which offers also web version (you could play with it in &lt;a href="https://demo.dbgate.org" rel="noopener noreferrer"&gt;demo app&lt;/a&gt;). But if you need only to write simple SQL query into one database, you could use simpler solutions. Otherwise, when you don't like to write repeating simple queries, this tool is right choice for you. DbGate is developed by Jan Prochazka (author of this article).&lt;/p&gt;

&lt;p&gt;Supported databases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MySQL+MariDB&lt;/li&gt;
&lt;li&gt;PostgreSQL+CockroachDB+Amazon Redshift&lt;/li&gt;
&lt;li&gt;Microsoft SQL Server&lt;/li&gt;
&lt;li&gt;SQLite&lt;/li&gt;
&lt;li&gt;MongoDB&lt;/li&gt;
&lt;li&gt;Redis&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqxczajt6wcxtuhd2hwx0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqxczajt6wcxtuhd2hwx0.png" alt="DbGate screenshot"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Beekeeper Studio
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.beekeeperstudio.io" rel="noopener noreferrer"&gt;Beekeeper Studio studio&lt;/a&gt; is popular and modern GUI client. It offers only basic functionality (focused on writing SQL queries), but looks very nice and has very good basic workflow. The key design concept is that one opened window contains only tables and queries from one database. If you need to work with more databases simultaneously, you need to open more app windows. If has two editions - community and commercial. Community is free and open-source, paid commercial license offers a few additional features (eg. support for Oracle database). Beekeeper Studio is developed and maintained by Matthew Rathbone. But has also quite active contributor community on GitHub.&lt;/p&gt;

&lt;p&gt;Supported databases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MySQL+MariDB&lt;/li&gt;
&lt;li&gt;PostgreSQL+CockroachDB+Amazon Redshift&lt;/li&gt;
&lt;li&gt;Microsoft SQL Server&lt;/li&gt;
&lt;li&gt;SQLite&lt;/li&gt;
&lt;li&gt;Oracle (only commercial edition)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu6s4v8lrlcqb3sb3lswq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu6s4v8lrlcqb3sb3lswq.png" alt="Beekeeper Studio screenshot"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Antares SQL
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://antares-sql.app" rel="noopener noreferrer"&gt;Antares&lt;/a&gt; is probably the youngest client from this list. It has distinctive visual style. It uses multiple databases, but one connection per window paradigm. You could switch between connections using left panel, which is in other tools (including VS Code) used for widget switching. It has quite good SQL dumping abilities for PostgreSQL and MySQL (ability to make SQL backup of database/selected tables), which is a bit problem for other tools. Also it utilizes &lt;a href="https://www.theverge.com/2022/1/9/22874949/developer-corrupts-open-source-libraries-projects-affected" rel="noopener noreferrer"&gt;(in)famous&lt;/a&gt; library faker.js, you could insert new rows with testing data. Antares is developed by Fabio Di Stasio.&lt;/p&gt;

&lt;p&gt;Supported databases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MySQL+MariDB&lt;/li&gt;
&lt;li&gt;PostgreSQL&lt;/li&gt;
&lt;li&gt;SQLite&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs7a7q0cm5id72esco4jz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs7a7q0cm5id72esco4jz.png" alt="Antares SQL screenshot"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Sqlectron
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://sqlectron.github.io" rel="noopener noreferrer"&gt;Sqlectron&lt;/a&gt; is on the other hand the oldest and also the simplest tool from this list. Source codes from Sqlectron was a base for Beekeeper Studio. As a speciality, it offers console version, which is quite unique feature. Sqlectron was developed by more contributors, but it seems not actively developed.&lt;/p&gt;

&lt;p&gt;Supported databases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MySQL+MariDB&lt;/li&gt;
&lt;li&gt;PostgreSQL+Amazon Redshift&lt;/li&gt;
&lt;li&gt;Microsoft SQL Server&lt;/li&gt;
&lt;li&gt;SQLite&lt;/li&gt;
&lt;li&gt;Cassandra&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5ayeaa285uebhjly238j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5ayeaa285uebhjly238j.png" alt="Sqlectron screenshot"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Feature comparison
&lt;/h2&gt;

&lt;p&gt;This table contains only common features (implemented by at least 2 tools). Features specific for one tool were mentioned above.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Azure Data Studio&lt;/th&gt;
&lt;th&gt;DbGate&lt;/th&gt;
&lt;th&gt;Beekeeper Studio&lt;/th&gt;
&lt;th&gt;Antares SQL&lt;/th&gt;
&lt;th&gt;Sqlectron&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Code completion&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Query formatter&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Query history&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Light and dark mode&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Runs on Mac M1&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Table filtering and sorting&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Foreign key navigation&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Table structure editor&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;only new table&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Export SQL dump&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;MySQL&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;MySQL, PostgreSQL&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Plugins&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Import&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;CSV, NDJSON, Excel, XML&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Export&lt;/td&gt;
&lt;td&gt;CSV, Excel, JSON, XML&lt;/td&gt;
&lt;td&gt;JSON, NDJSON, SQL, CSV, Excel, XML&lt;/td&gt;
&lt;td&gt;JSV, JSON, NDJSON, SQL&lt;/td&gt;
&lt;td&gt;JSON, CSV, SQL&lt;/td&gt;
&lt;td&gt;CSV, JSON&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;If you know about other tool not listed in this article, you could write about it in comments below.&lt;/p&gt;

</description>
      <category>database</category>
      <category>sql</category>
      <category>node</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
