📄 simpleapp.java
字号:
* // do something with the result set * } * to process all returned rows, but we are only expecting two rows * this time, and want the verification code to be easy to * comprehend, so we use a different pattern. */ int number; // street number retreived from the database boolean failure = false; if (!rs.next()) { failure = true; reportFailure("No rows in ResultSet"); } if ((number = rs.getInt(1)) != 300) { failure = true; reportFailure( "Wrong row returned, expected num=300, got " + number); } if (!rs.next()) { failure = true; reportFailure("Too few rows"); } if ((number = rs.getInt(1)) != 1910) { failure = true; reportFailure( "Wrong row returned, expected num=1910, got " + number); } if (rs.next()) { failure = true; reportFailure("Too many rows"); } if (!failure) { System.out.println("Verified the rows"); } // delete the table s.execute("drop table location"); System.out.println("Dropped table location"); /* We commit the transaction. Any changes will be persisted to the database now. */ conn.commit(); System.out.println("Committed the transaction"); /* * In embedded mode, an application should shut down the database. * If the application fails to shut down the database, * Derby will not perform a checkpoint when the JVM shuts down. * This means that it will take longer to boot (connect to) the * database the next time, because Derby needs to perform a recovery * operation. * * It is also possible to shut down the Derby system/engine, which * automatically shuts down all booted databases. * * Explicitly shutting down the database or the Derby engine with * the connection URL is preferred. This style of shutdown will * always throw an SQLException. * * Not shutting down when in a client environment, see method * Javadoc. */ if (framework.equals("embedded")) { try { // the shutdown=true attribute shuts down Derby DriverManager.getConnection("jdbc:derby:;shutdown=true"); // To shut down a specific database only, but keeep the // engine running (for example for connecting to other // databases), specify a database in the connection URL: //DriverManager.getConnection("jdbc:derby:" + dbName + ";shutdown=true"); } catch (SQLException se) { if (( (se.getErrorCode() == 50000) && ("XJ015".equals(se.getSQLState()) ))) { // we got the expected exception System.out.println("Derby shut down normally"); // Note that for single database shutdown, the expected // SQL state is "08006", and the error code is 45000. } else { // if the error code or SQLState is different, we have // an unexpected exception (shutdown failed) System.err.println("Derby did not shut down normally"); printSQLException(se); } } } } catch (SQLException sqle) { printSQLException(sqle); } finally { // release all open resources to avoid unnecessary memory usage // ResultSet try { if (rs != null) { rs.close(); rs = null; } } catch (SQLException sqle) { printSQLException(sqle); } // Statements and PreparedStatements int i = 0; while (!statements.isEmpty()) { // PreparedStatement extend Statement Statement st = (Statement)statements.remove(i); try { if (st != null) { st.close(); st = null; } } catch (SQLException sqle) { printSQLException(sqle); } } //Connection try { if (conn != null) { conn.close(); conn = null; } } catch (SQLException sqle) { printSQLException(sqle); } } } /** * Loads the appropriate JDBC driver for this environment/framework. For * example, if we are in an embedded environment, we load Derby's * embedded Driver, <code>org.apache.derby.jdbc.EmbeddedDriver</code>. */ private void loadDriver() { /* * The JDBC driver is loaded by loading its class. * If you are using JDBC 4.0 (Java SE 6) or newer, JDBC drivers may * be automatically loaded, making this code optional. * * In an embedded environment, this will also start up the Derby * engine (though not any databases), since it is not already * running. In a client environment, the Derby engine is being run * by the network server framework. * * In an embedded environment, any static Derby system properties * must be set before loading the driver to take effect. */ try { Class.forName(driver).newInstance(); System.out.println("Loaded the appropriate driver"); } catch (ClassNotFoundException cnfe) { System.err.println("\nUnable to load the JDBC driver " + driver); System.err.println("Please check your CLASSPATH."); cnfe.printStackTrace(System.err); } catch (InstantiationException ie) { System.err.println( "\nUnable to instantiate the JDBC driver " + driver); ie.printStackTrace(System.err); } catch (IllegalAccessException iae) { System.err.println( "\nNot allowed to access the JDBC driver " + driver); iae.printStackTrace(System.err); } } /** * Reports a data verification failure to System.err with the given message. * * @param message A message describing what failed. */ private void reportFailure(String message) { System.err.println("\nData verification failed:"); System.err.println('\t' + message); } /** * Prints details of an SQLException chain to <code>System.err</code>. * Details included are SQL State, Error code, Exception message. * * @param e the SQLException from which to print details. */ public static void printSQLException(SQLException e) { // Unwraps the entire exception chain to unveil the real cause of the // Exception. while (e != null) { System.err.println("\n----- SQLException -----"); System.err.println(" SQL State: " + e.getSQLState()); System.err.println(" Error Code: " + e.getErrorCode()); System.err.println(" Message: " + e.getMessage()); // for stack traces, refer to derby.log or uncomment this: //e.printStackTrace(System.err); e = e.getNextException(); } } /** * Parses the arguments given and sets the values of this class' instance * variables accordingly - that is which framework to use, the name of the * JDBC driver class, and which connection protocol protocol to use. The * protocol should be used as part of the JDBC URL when connecting to Derby. * <p> * If the argument is "embedded" or invalid, this method will not change * anything, meaning that the default values will be used.</p> * <p> * @param args JDBC connection framework, either "embedded", "derbyclient" * or "jccjdbcclient". Only the first argument will be considered, * the rest will be ignored. */ private void parseArguments(String[] args) { if (args.length > 0) { if (args[0].equalsIgnoreCase("jccjdbcclient")) { framework = "jccjdbc"; driver = "com.ibm.db2.jcc.DB2Driver"; protocol = "jdbc:derby:net://localhost:1527/"; } else if (args[0].equalsIgnoreCase("derbyclient")) { framework = "derbyclient"; driver = "org.apache.derby.jdbc.ClientDriver"; protocol = "jdbc:derby://localhost:1527/"; } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -