Giter VIP home page Giter VIP logo

databvase's Introduction

Dragnilar's GitHub stats Top Langs

databvase's People

Contributors

dragnilar avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

Forkers

gz-hedi

databvase's Issues

Enable Multiline Typing / Rectangular Sellection With Scintilla

17dc2e0 - Users are now able to hold alt and make rectangular selections in the Scintilla editor to highlight rectangular regions of text. They are also now able to retain focus if they select a whole column of text and start typing and all text will go to all lines in the region.

Note: I know this is functionality that is of course baked into Scintilla/Notepad++ but its also important to have it since its EXTREMELY useful. SSMS features it as well.

Add Unit Tests

Add unit tests for the data access layer in databvase

Syntax Highlighting Slows Down Query Text Editor Text Input

The syntax highlighting service causes a minor delay when typing into the query text editor. While it is still perfectly usable, this causes a slight annoyance for people who are used to the "normal" performance provided by SSMS and Visual Studio.

DevExpress has acknowledged this in their own forums. Unfortunately it looks like they do not have immediate plans to address this because it would require heavily reworking the Rich Text Editor control. Since this looks like something that could take years(?) to get fixed, its probably time to look into other options.

Add Ability to Refresh The Object Explorer

The object explorer is currently lacking the ability to refresh it. As a result, if any object is changed, the user has to disconnect and reconnect to an instance before they can see what has been added/changed/removed in the object explorer.

While on this subject, it would probably be also good if renaming of objects could be done in real time, but that's probably a separate enhancement.

Add Query Builder

Add a query builder, similar to the one in SSMS so that users have a visual aid to create joins and other types of queries.

As of 4/30/18 this is about 45% finished. The code needs to be cleaned up and the queries created need to be sent to a query tab. A loading/wait message may also be desired as the query builder has to create a connection when it's instantiated, and this can take some time.

Query Builder Does Not Show Wait Form When Loading

The query builder does not show a wait form when loading, and it takes a while. It could possibly be made async but for now we should at least show a wait form so that the user doesn't think the app is frozen.

Implement High DPI Support

High DPI support is currently not implemented. As a result, Databvase may appear distorted and/or unusable on computers that are using DPI settings greater than 100%. It would be good to have this so that Databvase functions consistently across computers.

Add Ability To Commit Records From The Grid

While this is a highly unrealistic possibility, it would be great to have the ability to edit records in the grid and commit them on the fly, like with Data Grip.

This could be possible, but some significant work would be required.

Large Stored Procedure/View/Function Scripts Make UI Unresponsive While Generating

Repro:

  1. Open Databvase
  2. Connect to a server
  3. Expand the object explorer to either views, functions or stored procedures
  4. Right click on one of the object types mentioned in step 3 that you KNOW has a large alter/create script
  5. Select to script it as either alter or create to a new query pane
    Result:
    While the script is generated the UI is unresponsive and no wait indicator is displayed.
  • Should probably show a wait form.

NOTE: SSMS does NOT do this asynchronously...

Remove DevExpress Localization Files

Currently the .exe size is being bloated a little due to the fact that Costura is embedding the DevExpress localization files. These should be removed to help trim down the size of the .exe.

Clicking Cancel On Text Editor Font Styles From Ribbon Throws Exception In Query Text Editor

  1. Open a query pane and then close it.
  2. Click "Text Editor Font Styles" on the ribbon
  3. Text Editor Font config window appears
  4. Click Cancel
Result:
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.NullReferenceException: Object reference not set to an instance of an object.
   at Databvase_Winforms.Controls.QueryTextEditor.QueryTextEditor.RegisterSyntaxHighlightingService(Boolean forceExecute) in C:\Users\swhite\source\repos\Databvase-master\Databvase-Winforms\Controls\QueryTextEditor\QueryTextEditor.cs:line 55
   at Databvase_Winforms.Controls.QueryTextEditor.QueryTextEditor.ApplyFontChange() in C:\Users\swhite\source\repos\Databvase-master\Databvase-Winforms\Controls\QueryTextEditor\QueryTextEditor.cs:line 134
   at Databvase_Winforms.Controls.QueryTextEditor.QueryTextEditor.ApplySettingsUpdate(SettingsUpdatedMessage message) in C:\Users\swhite\source\repos\Databvase-master\Databvase-Winforms\Controls\QueryTextEditor\QueryTextEditor.cs:line 127

Display Some Type Of Output/Report For Execution Plans

The execution plan for a query can be obtained from SQL Server.

There's probably a number of ways that this can be handled, and of course this could get rather time consuming depending on how one goes about rendering the plan (I.E. Go SSMS style and show icons for each node in the plan, etc.)

A C# example can be found here:

https://stackoverflow.com/questions/25879543/are-there-any-way-to-programmatically-execute-a-query-with-include-actual-execut

Direct X Settings Changed Message Displays When Opening The Settings Menu Even Though The User Has Not Actually Tried To Change It

Repro Steps:

Possibly optional pre-req: You may need to have enabled Direct X prior to performing the steps below.

  1. Open Databvase
  2. Open the settings menu
    Result:
    You will receive a pop up telling you that the direct x settings have been changed, blah blah blah. However you did not actually click on the check box to change anything, YET.

Reason:
The event in the VM always fires whenever the data binding changes. Since the value for UseDirectX is being set in the constructor, the event detects a change and fires.

Change:
For now I added an additional window state to the VM so that it first goes through a "loading" state before it sets the state to "shown". Subsequently the event for the direct x setting will only display the message if the window is actually shown. This isn't exactly the most ideal solution but I don't feel like spending a lot of time on this since this is more of a minor annoyance than anything else.

Null/Empty String Columns Are Not Easily Distinguishable For Nvarchar/VarChar Type Columns In Grid Filters

The default DevExpress grid filters do not provide the user with the ability to easily distinguish nulls and empty strings.

As a result both are combined in a category called 'blank'. This isn't a humongous problem but it does hurt the overall usability to filter out nulls from empty strings in specific data shaping/researching scenarios. It appears to overcome this, a custom filter will have to be used.

It isn't known at this point if this will require overriding the filter feature for all types of columns or if DevExpress allows you to handle it more selectively.

Add Intellisense to Databvase

It would be extremely nice if Databvase had intellisense.

This is unfortunately not easy to implement since DevExpress does not provide it out of the box and its obviously a feature that would take a significant amount of work to implement.

Add About/Information Window

Add an about/information window that displays at minimum:

  • Application version
  • Credits for various libraries used (both major third party such as DevExpress, Microsoft and other various Nuget packages such as Tyrrrz.Settings, Newtonsoft.Json, etc.)
  • Credits for Icons8 (as long as their icons are being used)
  • Link back to Github
  • Brief documentation (possibly could be handled by Github but it would be nice to have offline documentation as well to reduce the amount of dependency the app has on the internet)

When Query Errors Occur, Messages Tab Does Not Get Focused

Currently when an error occurs with a query (I.E. Bad syntax, table doesn't exist, etc), the messages tab does not get focused on a query pane. The user has to manually select the messages tab to see what went wrong. A message should be sent to the query pane to have it switch the focus to the messages tab.

Settings Window Does Not Expose All Potential Settings

The settings window is bare bones at this point. It could expose more settings.

Some potential candidates are:

  • Ability to perform CRUD on connections (unless this is handled in a different window/module)
  • More query results grid settings
  • Logging settings (when logging is implemented)
  • Toggling of Direct X on and off (this is currently available in the settings file but it isn't exposed)
  • Default font settings (this may or may not make it in, the default font does not get applied to windows where the font deviates from the default font)

Grid Exporting Performance Can Be Slow With Large Datasets

Currently if you export a large query results grid to any particular file type, the export process can take a while. This seems to be more or less something to be expected since Databvase is using the default DevExpress functionality baked into the grid. It is possible to make it faster, but it would require possibly implementing some custom exporting code.

Syntax Highlighting Does Not Parse Comments As Well As SSMS

Syntax highlighting is currently being handled by a regex to just "make it work". This isn't really the most ideal solution as there are various scenarios that it doesn't cover. For example, you can have:

/* select * from sometable 
-- where somevalue = '' 
*/

The syntax highlighting may not work correctly in this scenario.

It would be ideal to possibly replace this with a true SQL parser to get the most SSMS like experience.

Have Databvase Display Multiple Query Results Grids

Databvase only displays one query results grid at a time. This means that if you fire off a query that returns two or more results sets (I.E. Select * from table1, select * from table 2), you only get the first tables worth of results back.

SSMS is capable of displaying multiple results. It would be nice if Databvase were able to capture this functionality.

Add option to use connection pooling

Databvase currently use the connect -> do action -> disconnect pattern for all database operations. This is fine but it may be advantageous to add the ability to use connection pooling. SMO provides this functionality, so its very feasible to add it to Databvase.

Get rid of references to "ConnectionString" where it is misleading

27a8f71 - All references to "ConnectionString" have been renamed appropriately (simply either Connection or SavedConnection). This is to better emphasize that these are being used for Databvase's "SavedConnection" objects, which are not the same thing as a SQL Connection String. There is still one reference left, but that is for the query builder, which DOES use Connection Strings.

Note that this change also requires that if you have any previous connections saved in your config file to be renamed to the settings group Saved Connections. If you do not rename it, the next time you open the program, your saved connections will not show up and you will need to reinput them. Since the program is still in "alpha", we will NOT be adding any processes to automatically convert the setting to the new category.

There is no way to abort/cancel a query

SSMS allows you to cancel long running queries that may cause deadlock and/or are just taking too long to return results. It would be good if Databvase provides this functionality.

SMO seems to provide some way to implement this.

Auto Select Last Used Saved Connection On Connection Window When It Is Shown

Starting with 59fe97a, the last used saved connection is automatically selected when the connection window is shown. If the program is opening for the first time, the last used saved connection will of course be blank, so nothing will be selected.

For a separate enhancement, we should probably add an ability to delete saved connections and clear out the last used saved connection if it gets deleted from the collection.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.