如何解决H2DB混合模式,客户端获取空查询
我正在尝试为数据库连接构建某种单元测试。 首先,我创建一个新连接和新表,填充它,然后检查数据是否存在,此时一切都很好。 比客户端创建新连接并尝试获取相同数据但查询结果为空,0 行,2 列。
public class H2dbTest {
private static final String CREATE_TABLE = "CREATE TABLE TEST(ID varchar(12) primary key,NAME char(7))";
private static final String INSERT_QUERY = "INSERT INTO TEST(ID,NAME) VALUES (1234567,'TEST')";
private static final String SELECT_QUERY = "SELECT ID,NAME FROM TEST";
public static void main(String[] args) {
DeleteDbFiles.execute("~","test",true);
Connection connection = getDBConnection();
insertWithStatement(connection);
readFromClient();
}
private static void insertWithStatement(Connection connection) {
try {
connection.setAutoCommit(false);
Statement stmt = connection.createStatement();
stmt.execute(CREATE_TABLE);
stmt.execute(INSERT_QUERY);
ResultSet rs = stmt.executeQuery(SELECT_QUERY);
System.out.println("Check DB after insert");
while (rs.next()) {
System.out.println("Id " + rs.getInt("ID") + " Name " + rs.getString("NAME"));
}
stmt.cloSEOnCompletion();
} catch (sqlException e) {
System.out.println("Exception Message " + e.getLocalizedMessage());
} catch (Exception e) {
e.printstacktrace();
}
}
private static void readFromClient(){
Connection connection = null;
try {
connection = getDBConnection();
connection.setAutoCommit(false);
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(SELECT_QUERY);
System.out.println("Client DB query result");
while (rs.next()) {
System.out.println("Id " + rs.getInt("ID") + " Name " + rs.getString("ID"));
}
} catch (sqlException e) {
System.out.println("Exception Message " + e.getLocalizedMessage());
} catch (Exception e) {
e.printstacktrace();
} finally {
connection.close();
}
}
private static Connection getDBConnection() {
Connection dbConnection = null;
try {
Class.forName(DB_DRIVER);
} catch (ClassNotFoundException e) {
System.out.println(e.getMessage());
}
try {
dbConnection = DriverManager.getConnection(DB_CONNECTION,DB_USER,DB_PASSWORD);
return dbConnection;
} catch (sqlException e) {
System.out.println(e.getMessage());
}
return dbConnection;
}
}
解决方法
我错过了 connection.commit();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。