內存數據庫 HSQLDB
應用
在JUnit單元測試中,由於,很多時候沒有真實數據庫環境,所以,我們很自然的會借助內存數據庫HSQLDB。內存數據庫非常輕量級,當內存數據庫關閉後,內存中的數據也隨之消失。代碼雖然簡單,但還是貼出來,嗬嗬,供以後複製粘貼方便。
jdbcDriver in pom.xml of Maven:
<dependency> <groupId>org.hsqldb</groupId> <artifactId>hsqldb</artifactId> <version>2.3.2</version> </dependency>
package shuai.study.memorydb; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class MemoryDB { private static Connection connection = null; private static Statement statement = null; private static PreparedStatement preparedStatement = null; private static ResultSet resultSet = null; // Load jdbcDriver static { try { Class.forName("org.hsqldb.jdbcDriver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } } // Get DB connection public static Connection getConnection() { if (connection == null) { try { connection = DriverManager.getConnection("jdbc:hsqldb:mem:mdb", "shuai", "123"); } catch (SQLException e) { e.printStackTrace(); } } return connection; } // Get DB statement public static Statement getStatement() { if (connection == null) { getConnection(); } if (statement == null) { try { statement = connection.createStatement(); } catch (SQLException e) { e.printStackTrace(); } } return statement; } // Execute SQL public static void executeSQL(String sql) { if (statement == null) { getStatement(); } try { statement.executeUpdate(sql); } catch (SQLException e) { e.printStackTrace(); } } // Get resultSet public static ResultSet executeQuerySQL(String sql) { if (connection == null) { getConnection(); } try { preparedStatement = connection.prepareStatement(sql); resultSet = preparedStatement.executeQuery(); } catch (SQLException e) { e.printStackTrace(); } return resultSet; } // Print resultSet public static void resultPrint(ResultSet resultSet) { try { int columnCount = resultSet.getMetaData().getColumnCount(); String columnValue = null; while (resultSet.next()) { for (int n = 1; n <= columnCount; n++) { columnValue = resultSet.getString(n); if (n == columnCount) { System.out.println(columnValue); } else { System.out.print(columnValue + "\t"); } } } } catch (SQLException e) { e.printStackTrace(); } } // Close DB public static void closeDB() { try { if (resultSet != null) { resultSet.close(); } if (preparedStatement != null) { preparedStatement.close(); } if (statement != null) { statement.close(); } if (connection != null) { connection.close(); } } catch (SQLException e) { e.printStackTrace(); } } public static void main(String[] args) { MemoryDB.executeSQL("CREATE TABLE EMPLOYEE(ID INTEGER, NAME VARCHAR(20), SEX VARCHAR(10), TEAM VARCHAR(20))"); MemoryDB.executeSQL("INSERT INTO EMPLOYEE VALUES(1,'shuai', 'male', 'FMC')"); MemoryDB.executeSQL("INSERT INTO EMPLOYEE VALUES(2,'hellen', 'female', 'MUS')"); MemoryDB.executeSQL("INSERT INTO EMPLOYEE VALUES(3,'mery', 'female', 'SDM')"); MemoryDB.executeSQL("COMMIT"); ResultSet resultSet = MemoryDB.executeQuerySQL("SELECT * FROM EMPLOYEE"); MemoryDB.resultPrint(resultSet); MemoryDB.closeDB(); } }
最後更新:2017-04-03 07:57:02