內存數據庫 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