IntelliJ IDEA 13: What’s New in Database Tools

We hope you had enough time during the holidays to play with IntelliJ IDEA 13 and now want to try something new, like Database Tools, which has been so greatly improved in version 13 that you can now ditch your third party database client and perform all database operations right from IntelliJ IDEA (and it doesn’t matter what server you are using, you get the same user experience with all of them.)

Data Source Configuration

The data source configuration is no more a nightmare, thanks to the new Data Source and Drivers dialog. Just type a host, port, credentials and IntelliJ IDEA will take care of the rest, including downloading the driver and composing the JDBC URL.

Find Usages by a Primary Key

Another amazing new feature you’ll hardly find in any database client is Find Usages for a table row. This action helps you find all other rows referencing the current one via it’s primary key. Now you don’t need to write a query to find out, for example, which orders have been made by a certain customer, you just call Find Usages via Alt+F7 and that’s it.

Show Data by a Foreign Key

If you’d like to see the referenced data behind a foreign key (without leaving the table), just press Ctrl+Q (Ctrl+J for Mac) while a foreign key is selected, and IntelliJ IDEA will show you the data in a quick popup.

If you press the shortcut twice, you’ll get a popup with the Transposed view of the row.

Needless to say that navigation from a foreign key to referenced data works via Ctrl+B (Cmd+B for Mac).

Structure Popup and Tool Window

Every IntelliJ IDEA user knows how the Structure popup via Ctrl+F12 (Cmd+F12 for Mac) is useful when navigating in a file or class structure. Now you can use it in the table editor and result views as well to navigate between columns. Additionally, you can toggle column visibility (press Space), or even change their order via Shift+Alt+Up/Down (reset order with Alt+Shift+Ctrl+Backspace, Alt+Shift+Cmd+Backspace for Mac).

The same functionality is also available in the Structure tool window.

Note that the Structure popup (and tool window, too) let you navigate through an SQL file structure.

Query Filter and Sorting

User interface for query filter and results sorting has also been improved, and you can click column headers to sort data either locally or on the server side.

Other major improvements include:

  • Current SQL statement highlighting in the editor
  • Smart code completion for JOIN statements
  • Assigning colors to databases
  • Configuring H2 and SQLite data sources by drag and drop

As always you are welcome to share your feedback or submit bug reports to the issue tracker.

Stay tuned to our blog for more news.

Develop with Pleasure!

Comments below can no longer be edited.

13 Responses to IntelliJ IDEA 13: What’s New in Database Tools

  1. Avatar

    Craig LaValle says:

    January 13, 2014

    These are great. These features make me smile.

    But what would make me jump up and pump my fist in the air startling everyone in my office with yelps of joy? A physical data modelling tool.

    Anyone know of a plugin for that kind of thing? I looked through the issue tracker and didn’t see anything regarding such a feature…

  2. Avatar

    MuppetGate says:

    January 13, 2014

    Impressive! … 😀

    The key referencing stuff is damn clever!

  3. Avatar

    Hari says:

    January 15, 2014

    This is great..was curious when/if this will come to pycharm.

  4. Avatar

    Zorchon says:

    January 16, 2014

    Love the ability to follow relations easily. I don’t know if it would be worth the effort, but one could imagine being able to click a field in the popup and have that column’s values be substituted into the original column. Behind the scenes, clicking/choosing the column could auto-generate a join and maybe create a new tab for the results of the join.

  5. Avatar

    Sergio Toniutti says:

    January 22, 2014

    Good! but how i can use a Firebird DB?
    This DB is not present in the list; i have create a new driver definition, specifying the driver jaybird-full-2.1.6.jar but when i try to connect to the DB, IDEA launch this exception:
    Connection to Firebird-jdbc:firebirdsql:ntserver04/3050:presenze – failed: Exception in thread “main” java.lang.InstantiationException: org.firebirdsql.jdbc.FirebirdDriver
    at java.lang.Class.newInstance(Class.java:359)
    at com.intellij.persistence.database.console.RemoteJdbcServer.main(RemoteJdbcServer.java:15)


    Thanks, Sergio

    • Avatar

      Krzysztof Bury says:

      June 22, 2014

      Hi Sergio,

      I do have the same problem.

      I would be grateful if anyone could explain this problem or propose a solution.

      Thank you in advance.

      Best regards,

    • Avatar

      Ivan Borisov says:

      October 13, 2014

      Hello, try use org.firebirdsql.jdbc.FBDriver (not org.firebirdsql.jdbc.FirebirdDriver)

      • Avatar

        Bruno says:

        March 9, 2016

        I tried it, it didn’t work. Was it expected to work?

    • Avatar

      Israel Calderón says:

      September 13, 2017

      I recently was enable to connect my PHPStorm to my firebird database with Jaybird. I will post it here in case some one need it:

      In the new driver definition i use the Class: org.firebirdsql.jdbc.FBDriver

      In the Data source the URL is: jdbc:firebirdsql:localhost/3050:/opt/firebird/Example.fdb

      those were the important parts to me.

  6. Avatar

    Brandon Murray says:

    April 8, 2014

    Fantastic tool!

    The project I’m working on uses gradle and we use the gradle idea plugin to generate the idea project/module files. I implement my own hooks into this process to add my own customizations. One of them is to configure my datasources… this way I don’t have to manually reconfigure the data sources every time I need to regenerate my project files. The problem I’m having is that intellij encrypts the datasource password. So when I try to configure this through the gradle plugin, I’m stuck. Is there a way to turn off the encryption? Or another workaround you could recommend?


  7. Avatar

    kesten says:

    November 27, 2014

    I had a lot of trouble getting a custom connection to Vertica working.
    The error message wasn’t too helpful nor the idea.log file.

    java.lang.InstantiationException: java.sql.Driver
    at java.lang.Class.newInstance0(Class.java:342)
    at java.lang.Class.newInstance(Class.java:310)
    at com.intellij.database.remote.RemoteJdbcServer.main(RemoteJdbcServer.java:15)

    I tried all sorts of jars and main classes, using the official client vertica jars from the myvertica.com download website.
    I’m on a mac and I already have connections working with DBVisualizer.
    I got it to work as follows:

    Create a custom driver
    1. In the PyCharm Data Sources and Drivers dialog right click on the bold Drivers and select Add -> Database Driver
    2. Open the Driver Manager dialog in DBVisualizer and use all their settings.
    3. The downloaded vertica.jar files did not work. In the Driver Manager: Driver Settings dialog for DbVis copy the path to their jar.
    4. By default, the connection url suggested by pycharm will start with jdbc:driver . Change to jdbc:vertica
    5. Add a driver file path. On mac, when the dialog opens you have no way to specify the absolute path. Use cmd+shift+G to
    get the Go To path dialog and paste in the path copied from DbVisualizer
    6. Now you will have some options in the PyCharm Data Sources and Drivers dialog Class Name field. Select com.vertica.jdbc.Driver
    Create a new datasource
    1. right click on Data Sources
    2. Select the new driver you just created
    3. Type in the connection details – host, port, database, login creds
    4. Test the connection

    For me, that worked.

    • Avatar

      Kostya says:

      August 8, 2016

      kesten, thanks a lot for your instructions! It was very helpful!
      It seems that DbVisualizer’s driver is only compatible with jetbrains platform.
      To add url for driver just make a record with name “default” and value “jdbc:vertica://{host::localhost}:{port::5433}/{database}”

  8. Avatar

    Cuneyt Tuna says:

    February 2, 2015

    Is there a way to copy a row with all the referenced data?
    It’d have been very helpful to get data as a graph

Discover more