Home United States USA — software Developing a Database Management Tool Editor

[CSF] Developing a Database Management Tool Editor

203
0
SHARE

Presentation of developing a database management tool editor.
Join the DZone community and get the full member experience. This article is a project presentation of a SQL database management tool and the whole development process. The project name is LightBox and the source code can be found HERE. This project is a windows SQL database management tool. Some of the main features are the following. The goal is to provide fast performance and speed in high priority and have a simple UI interface. Also to support as many databases as possible and be stable software with a decent amount of configuration. The loading time of opening the application and the responsiveness is really fast. It designed to handle and represent a large amount of data from tables when needed and have a powerful editor with a good IntelliSense. At the moment of writing this article, most of the core functionalities and UI work is completed. Also, the databases supported are MySql, MariaDB, PostgreSQL, SQLite. The following are the main categories of what is left to be done. You may ask yourself, why I have done all these and bothered in the first place? why don’t I just use some other tool like dbeaver? I always loved to code and I still love it when I’m working or as a hobby/side projects. I started coding before I went to university and in my first semester, I already knew that I wanted to become a software engineer, I always loved to create my own tools/frameworks/libraries and work on enterprise systems. Now this project always was a hobby for me and I’m contributing whenever I can. It all started as a university course project we took my and my friend Valandis Pitsas. The project back then was to create a MySql dump application (Firedump). It was a. NET windows form application written in C#. It was something we enjoyed doing. Today Valandis still continues improving MySQL dump (Firedump) and adding extra features. The last feature he added was full incremental backup and delta backups. In its early stage it was just a MySQL dump app for the university course we did me and Valandis and below is a screenshot of the app. It had many features like advanced options, the ability to upload the dump in FTP or cloud(dropbox), and others. One last feature I really wanted to add before presenting the app was a SQL editor with IntelliSense. I thought it would be the coolest thing to show and will blow everyone’s mind. After some work, this is the early stage of the app. It looks nothing like the current one and it was super buggy, but it went pretty well in the presentation. After some years I decided to create a SQL editor as a hobby/side project. I also took some inspiration from SqlTools (oracle client) which I really enjoyed using for years. I created a new repo, took the good parts from Firedump, and started coding. For development, I use Visual Studio 2019 community edition. The app is a windows-form written in C# and runs on. NET 4.6 and above. In theory, it could run on Linux through WINE but I have never tested it. This is the main UI of the app. The UI is separated into 5 main categories/areas. Top bar menus and bottom are part of the main form. Left, right and center panels are children of the main form. An abstract UserControlReference class that extends System. Windows. Forms. UserControl class takes place. Left, right and center content are extending UserControlReference and main form holds a reference to them. So for example, if I want to get a reference to the Editor user control or any other control of type UserControlReference I have the following generic method. Below the analysis of the main core functionalities which proved very difficult to implement. There is only one open connection through the app lifecycle. once a connection to the database opens I pass the reference of the connection to the child components and to whoever needs it. The app never opens two parallel connections. This is also done for speed and simplicity(both me and the end-user).

Continue reading...