Tag: h2

JDBC-ResultSet在while-Loop中关闭

我在使用ResultSet时遇到了非常糟糕的时间,ResultSet在while-Loop中关闭,用于迭代此ResultSet。 我已经知道ResultSet关闭的确切行,但我不知道为什么。 public LinkedList alleAbrufen () throws SQLException { LinkedList alleAthleten = new LinkedList(); String abrufenAthleten = “SELECT * FROM Athlet ORDER BY athlet_id”; ResultSet athleten_rs = stmt.executeQuery(abrufenAthleten); while (athleten_rs.next()) { long id = athleten_rs.getInt(1); String name = athleten_rs.getString(2); LinkedList alleLeistungen = alleAbrufen((int) (id)); //after this line the ResultSet gets closed alleAthleten.add(new Athlet(id, name, alleLeistungen)); […]

将图片存储在H2数据库spring boot thymleaf中

美好的一天。 我想将图像存储在h2数据库中,然后在html页面中检索并显示相同的图像。 我正在使用spring boot和文件上传方法,但是我在绑定结果中遇到错误 这是页面/类: Category.java package com.vishal.project.entities; @Entity @Table(name=”category”) public class Category implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy= GenerationType.IDENTITY) @Column(name=”ID”) private Long id; @Size(min=1, max=90) @Column(name=”CATEGORY_NAME”) private String CategoryName; @Lob @Column(name=”CATEGORY_PHOTO”) private byte[] CategoryPhoto; public Category(Long id, @Size(min = 1, max = 90) String categoryName, byte[] categoryPhoto) { […]

基于文件的h2持久但未在Spring Boot中加载

我做了一个基于Spring Boot的小应用程序: 弹簧引导启动的Web 弹簧引导起动数据JPA 该应用程序只有一个域类Post.java 。 因此,有一个RestController和一个DAO。 数据应该保存在基于文件的hsql db中。 当应用程序运行时,一切似乎都很好。 数据存储。 创建了h2文件并包含insert语句。 但是,当我杀死应用程序并再次启动它时。 没有加载数据。 (好像创建了一个全新的db文件,它覆盖了旧文件)。 application.properties spring.datasource.url = jdbc:h2:file:~/testdb spring.datasource.username = sa spring.datasource.password = sa spring.datasource.driverClassName = org.h2.Driver 的pom.xml org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-data-jpa com.h2database h2 1.4.179 PostDAO.java public interface PostDAO extends JpaRepository{ public Post findByMessage(String message); } Post.java @Entity public class Post { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) […]

关闭H2的正确方法是什么?

这与这篇文章有关 。 我认为我遇到H2问题意味着它没有正确关闭。 我怀疑这是因为当我关闭tomcat并且进程没有停止时我看到myDB.lock.db 我使用Tomcat的连接池,数据库的URL是: url=”jdbc:h2:file:/opt/myOrg/tomcat/webapps/MyApplication/db/myDatabase;SCHEMA=myschema” 来自doc close H2 : 通常,数据库在最后一次连接关闭时关闭….默认情况下,数据库在最后一个连接关闭时关闭。 但是,如果它从未关闭,则在虚拟机使用关闭挂钩正常退出时,数据库将关闭 我无法理解我是否做错了什么。 我应该通过命令强制关闭数据库吗? 这是关机钩子的意思吗? 我在这做错了什么? 注意: 我在Google中找不到如何正确关闭H2的示例(除了它在上次连接关闭时自动关闭的声明)。 我应该自己打电话给SHUTDOWN吗? 这是正确的方法吗? 我已经看到投票来结束这个问题了,但我正在调查的一个例子没有理由或联系 更新: 在Joonas Pulakka回答一些额外信息之后: 从javacore我使用kill -3我看到线程: “H2 Log Writer MYAPPLICATION”J9VMThread:0x08DC6F00,j9thread_t:0x08C9B790,java / lang / Thread:0xE7206CC8,状态:CW,prio = 5 3XMTHREADINFO1(本机线程ID:0xA32,原生优先级:0x5,本机策略:UNKNOWN)3XMTHREADINFO2 (本机堆栈地址范围从:0xE5E26000,到:0xE5E67000,大小:0x41000)3XMTHREADINFO3 Java callstack: java / lang / Object.wait中的4XESTACKTRACE(本机方法) 4XESTACKTRACE at java / lang / Object.wait(Object.java:196(Compiled Code))4XESTACKTRACE at org […]

以编程方式启动H2数据库

我正在使用Java编写服务器 – 客户端应用程序,我需要在服务器端实现本地数据库,然后我决定使用H2数据库引擎。 还有一件事是我通过TCP连接来启动和运行数据库。 这是我到目前为止所说的: Class.forName(“org.h2.Driver”); Server server = Server.createTcpServer(DB_PATH).start(); Connection currentConn = DriverManager.getConnection(DB_PATH, DB_USER, DB_PASSWORD); 连接字符串是jdbc:h2:tcp://localhost/~/test 。 该段代码返回exception: Feature not supported: “jdbc:h2:tcp://localhost/~/test” [50100-176] 我跟着这篇文章 。

在内存数据库中使用Hibernate和H2时出错

我正在使用Hibernate。 如何将persistence.xml配置为具有H2内存数据库? 我的persistence.xml是: com.mastertheboss.domain.Employee com.mastertheboss.domain.Department 但是当我运行我的应用程序时,我收到以下错误 : Internal Exception: org.h2.jdbc.JdbcSQLException: Table “EMPLOYEE” not found; SQL statement: SELECT ID, NAME, DEPARTMENT_ID FROM EMPLOYEE [42102-171] Error Code: 42102 Call: SELECT ID, NAME, DEPARTMENT_ID FROM EMPLOYEE Query: ReadAllQuery(referenceClass=Employee sql=”SELECT ID, NAME, DEPARTMENT_ID FROM EMPLOYEE”)

向/从SQL数据库(例如H2)插入和获取java.time.LocalDate对象

如何通过JDBC将诸如LocalDate类的java.time类型插入到SQL数据库(如H2数据库引擎)中 ? 使用PreparedStatement::setDate和ResultSet::getDate的旧方法适用于旧的java.sql.Date类型。 我想避免使用这些麻烦的旧日期时间类。 通过JDBC驱动程序发送java.time类型的现代方法是什么?

为什么我们需要JDBC的连接池?

使用像DBCP或c3p0这样的JDBC连接池工具有什么好处? 如果一个用户有一个小型CRUD应用程序,我们可以创建一个连接会话作为单例吗? PS :我正在构建一个小型的javafx应用程序后端使用小型h2数据库(5个表)。

h2(嵌入模式)数据库文件问题

我的src目录(Java,Eclipse)中有一个h2-database文件:h2test.db 问题: 从命令行启动h2.jar(以及端口8082上的h2浏览器界面),我在h2test.db中创建了2个表’test1’和’test2’,我在其中放了一些数据; 当试图从java代码(JDBC)访问它们时,它会抛出“table not found exception”。 java代码中的“show tables”显示了一个0行的结果集。 另外,当从java代码(CREATE TABLE …等)创建一个新表(’newtest’)时,我在以后启动h2.jar浏览器界面时看不到它; 只显示了其他两个表(’test1’和’test2’)(但随后可以从java代码中访问新创建的表’newtest’)。 我对嵌入式数据库缺乏经验; 我相信我在这里做了一些根本错误的事情。 我的假设是,我正在访问同一个文件 – 一次来自java应用程序,一次来自h2控制台 – 浏览器界面。 我似乎无法理解,我在这里做错了什么? 编辑:根据要求,添加一些代码: Java代码: Class.forName(“org.h2.Driver”); String url = “jdbc:h2:” + “db/h2test.db”; String user = “aeter”; String password = “aeter”; Connection conn = DriverManager.getConnection(url, user, password); PreparedStatement ps2 = conn.prepareStatement(“Show tables;”); ResultSet rs = ps2.executeQuery(); 此结果集有0行(没有表),而不是向我显示2个表。 H2控制台 […]

如何在服务器模式下运行H2数据库?

如何在服务器模式下启动H2数据库。 我需要从我的应用程序启动它。我尝试了以下代码: server = Server.createTcpServer().start(); 以下是连接的属性: javabase.jdbc.url = jdbc:h2:tcp://localhost:9092/nio:~/source/db/database/db;AUTO_SERVER=TRUE javabase.jdbc.driver = org.h2.Driver javabase.jdbc.username = sa javabase.jdbc.password = 当我运行该程序时,我收到以下错误: client.db.exception.DAOException: org.h2.jdbc.JdbcSQLException: Database may be already in use: “Locked by another process”. Possible solutions: close all other connection(s); use the server mode [90020-164] at org.h2.message.DbException.getJdbcSQLException(DbException.java:329) at org.h2.message.DbException.get(DbException.java:169) at org.h2.message.DbException.get(DbException.java:146) at org.h2.store.FileLock.getExceptionAlreadyInUse(FileLock.java:439) at org.h2.store.FileLock.lockFile(FileLock.java:336) at org.h2.store.FileLock.lock(FileLock.java:128) at org.h2.engine.Database.open(Database.java:542) […]