Package org.h2.tools

Class Shell

  • All Implemented Interfaces:
    java.lang.Runnable

    public class Shell
    extends Tool
    implements java.lang.Runnable
    Interactive command line tool to access a database using JDBC.
    • Constructor Summary

      Constructors 
      Constructor Description
      Shell()  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      private void connect()  
      private java.sql.Connection connectH2​(java.lang.String driver, java.lang.String url, java.lang.String user)  
      private void execute​(java.lang.String sql)  
      private boolean loadRow​(java.sql.ResultSet rs, int len, java.util.ArrayList<java.lang.String[]> rows)  
      static void main​(java.lang.String... args)
      Options are case sensitive.
      protected void print​(java.lang.String s)
      Print the string without newline, and flush.
      private void println​(java.lang.String s)  
      private int printResult​(java.sql.ResultSet rs, boolean asList)  
      private int printResultAsList​(java.sql.ResultSet rs)  
      private int printResultAsTable​(java.sql.ResultSet rs)  
      private int[] printRows​(java.util.ArrayList<java.lang.String[]> rows, int len)  
      private void promptLoop()  
      private java.lang.String readLine()  
      private java.lang.String readLine​(java.lang.String defaultValue)  
      private java.lang.String readPassword()  
      void run()
      INTERNAL.
      void runTool​(java.lang.String... args)
      Run the shell tool with the given command line settings.
      void runTool​(java.sql.Connection conn, java.lang.String... args)
      Run the shell tool with the given connection and command line settings.
      void setErr​(java.io.PrintStream err)
      Sets the standard error stream.
      void setIn​(java.io.InputStream in)
      Redirects the standard input.
      void setInReader​(java.io.BufferedReader reader)
      Redirects the standard input.
      private void showHelp()  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • err

        private java.io.PrintStream err
      • in

        private java.io.InputStream in
      • reader

        private java.io.BufferedReader reader
      • conn

        private java.sql.Connection conn
      • stat

        private java.sql.Statement stat
      • listMode

        private boolean listMode
      • maxColumnSize

        private int maxColumnSize
      • history

        private final java.util.ArrayList<java.lang.String> history
      • stopHide

        private boolean stopHide
      • serverPropertiesDir

        private java.lang.String serverPropertiesDir
    • Constructor Detail

      • Shell

        public Shell()
    • Method Detail

      • main

        public static void main​(java.lang.String... args)
                         throws java.sql.SQLException
        Options are case sensitive.
        Supported options
        [-help] or [-?] Print the list of options
        [-url "<url>"] The database URL (jdbc:h2:...)
        [-user <user>] The user name
        [-password <pwd>] The password
        [-driver <class>] The JDBC driver class to use (not required in most cases)
        [-sql "<statements>"] Execute the SQL statements and exit
        [-properties "<dir>"] Load the server properties from this directory
        If special characters don't work as expected, you may need to use -Dfile.encoding=UTF-8 (Mac OS X) or CP850 (Windows).
        Parameters:
        args - the command line arguments
        Throws:
        java.sql.SQLException - on failure
      • setErr

        public void setErr​(java.io.PrintStream err)
        Sets the standard error stream.
        Parameters:
        err - the new standard error stream
      • setIn

        public void setIn​(java.io.InputStream in)
        Redirects the standard input. By default, System.in is used.
        Parameters:
        in - the input stream to use
      • setInReader

        public void setInReader​(java.io.BufferedReader reader)
        Redirects the standard input. By default, System.in is used.
        Parameters:
        reader - the input stream reader to use
      • runTool

        public void runTool​(java.lang.String... args)
                     throws java.sql.SQLException
        Run the shell tool with the given command line settings.
        Specified by:
        runTool in class Tool
        Parameters:
        args - the command line settings
        Throws:
        java.sql.SQLException - on failure
      • runTool

        public void runTool​(java.sql.Connection conn,
                            java.lang.String... args)
                     throws java.sql.SQLException
        Run the shell tool with the given connection and command line settings. The connection will be closed when the shell exits. This is primary used to integrate the Shell into another application.

        Note: using the "-url" option in args doesn't make much sense since it will override the conn parameter.

        Parameters:
        conn - the connection
        args - the command line settings
        Throws:
        java.sql.SQLException - on failure
      • showHelp

        private void showHelp()
      • promptLoop

        private void promptLoop()
      • connect

        private void connect()
                      throws java.io.IOException,
                             java.sql.SQLException
        Throws:
        java.io.IOException
        java.sql.SQLException
      • connectH2

        private java.sql.Connection connectH2​(java.lang.String driver,
                                              java.lang.String url,
                                              java.lang.String user)
                                       throws java.io.IOException,
                                              java.sql.SQLException
        Throws:
        java.io.IOException
        java.sql.SQLException
      • print

        protected void print​(java.lang.String s)
        Print the string without newline, and flush.
        Parameters:
        s - the string to print
      • println

        private void println​(java.lang.String s)
      • readPassword

        private java.lang.String readPassword()
                                       throws java.io.IOException
        Throws:
        java.io.IOException
      • run

        public void run()
        INTERNAL. Hides the password by repeatedly printing backspace, backspace, >, <.
        Specified by:
        run in interface java.lang.Runnable
      • readLine

        private java.lang.String readLine​(java.lang.String defaultValue)
                                   throws java.io.IOException
        Throws:
        java.io.IOException
      • readLine

        private java.lang.String readLine()
                                   throws java.io.IOException
        Throws:
        java.io.IOException
      • execute

        private void execute​(java.lang.String sql)
      • printResult

        private int printResult​(java.sql.ResultSet rs,
                                boolean asList)
                         throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • printResultAsTable

        private int printResultAsTable​(java.sql.ResultSet rs)
                                throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • loadRow

        private boolean loadRow​(java.sql.ResultSet rs,
                                int len,
                                java.util.ArrayList<java.lang.String[]> rows)
                         throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • printRows

        private int[] printRows​(java.util.ArrayList<java.lang.String[]> rows,
                                int len)
      • printResultAsList

        private int printResultAsList​(java.sql.ResultSet rs)
                               throws java.sql.SQLException
        Throws:
        java.sql.SQLException