【发布时间】:2021-06-22 20:19:14
【问题描述】:
我正在尝试在我的 spring-boot 应用程序中将 SQLITE 设置为内存数据库。但是当我尝试查询数据库时,它给了我一个错误“没有这样的表”
有人可以推荐我做错了什么吗?我只需要在内存中使用 SQLITE,而且我们只在项目中使用 jdbc。
这是我的代码:
application.properties
spring.datasource.url=jdbc:sqlite:memory
spring.datasource.username=
spring.datasource.password=
spring.datasource.platform=sqlite
spring.datasource.driver-class-name=org.sqlite.JDBC
MyRepo.java
@Repository
public class MyRepo{
@Autowired
private NamedParameterJdbcTemplate namedJdbc;
public String getUserName() throws Exception{
String userName = null;
String sql = "SELECT username FROM emp WHERE username=:name";
MapSqlParameterSource paramSource = new MapSqlParameterSource();
paramSource.addValue("name", "tuser");
userName = this.namedJdbc.query(sql, paramSource, (rs) -> {
String name = null;
while (rs.next()) {
name = rs.getString("username").trim();
return name;
}
return null;
});
return userName;
}
}
UserDaoTest.java
@SpringBootTest
public class UserDaoTest {
@Autowired
private MyRepo rep;
@Test
public void testFindByname() throws Exception{
rep.getUserName();
}
}
我在 src/main/resources 下也有 schema.sql 和 data.sql 文件
schema.sql
DROP TABLE IF EXISTS emp;CREATE TABLE IF NOT EXISTS emp(username VARCHAR(20), empId BIGINT, PRIMARY KEY(empId) )
数据.sql
INSERT INTO emp(username,empId) VALUES ('tuser',1001);
我得到的异常:
PreparedStatementCallback; uncategorized SQLException for SQL [SELECT username FROM Chats WHERE username=?]; SQL state [null]; error code [1]; [SQLITE_ERROR] SQL error or missing database (no such table: Chats)
【问题讨论】:
-
还在您的 application.properties 文件中添加属性
spring.jpa.hibernate.ddl-auto=update。有关阅读此答案的更多信息:stackoverflow.com/a/66760630/9457633 -
请注意,Spring Data JDBC(或 JPA)可以完成您需要的一切,而无需自己编写 DAO。
-
@Md. Kawser Habib:我没有在我的项目中使用休眠。我需要让它像 jdbc 本身一样工作
-
@chrylis -cautiouslyoptimistic :我不确定你在说什么,但我需要访问数据并且由于某种原因查询引发异常?
标签: java spring spring-boot sqlite spring-boot-test