Package org.h2.tools
Class Shell
- java.lang.Object
-
- org.h2.util.Tool
-
- org.h2.tools.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.
-
-
Field Summary
Fields Modifier and Type Field Description private static char
BOX_VERTICAL
private java.sql.Connection
conn
private java.io.PrintStream
err
private java.util.ArrayList<java.lang.String>
history
private static int
HISTORY_COUNT
private java.io.InputStream
in
private boolean
listMode
private static int
MAX_ROW_BUFFER
private int
maxColumnSize
private java.io.BufferedReader
reader
private java.lang.String
serverPropertiesDir
private java.sql.Statement
stat
private boolean
stopHide
-
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 org.h2.util.Tool
isOption, printNoDatabaseFilesFound, setOut, showUsage, showUsageAndThrowUnsupportedOption, throwUnsupportedOption
-
-
-
-
Field Detail
-
MAX_ROW_BUFFER
private static final int MAX_ROW_BUFFER
- See Also:
- Constant Field Values
-
HISTORY_COUNT
private static final int HISTORY_COUNT
- See Also:
- Constant Field Values
-
BOX_VERTICAL
private static final char BOX_VERTICAL
- See Also:
- Constant Field Values
-
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
-
-
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 - 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.
-
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 theconn
parameter.- Parameters:
conn
- the connectionargs
- 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 interfacejava.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
-
-