我很擅长使用嵌入式数据库,也使用Spring MVC。我已经制作了弹簧启动应用程序并使用了h2数据库但是在单独的项目中,我无法将两者结合在一起。
我最近的问题是在index.jsp页面中我用来显示候选人选区列表供用户选择。我已经克服了创建连接,但是我一直收到错误"表"候选人"未找到; SQL语句:从候选人中选择DISTINCT CONSTITUENCY ORDER BY CONSTITUENCY [42102-187]"。
我知道桌子在那里,但我不确定我是否在项目架构中的正确位置设置了它。我创建了一个名为SQL的文件夹(在src中,然后是main)并在此处放置了一个data.sql和schema.sql填充
>ELECTION2016
>src/main/java
>src/main/resources
>src/test/java
>JRE System Library
>Maven Dependencies
>Apache Tomcat v8.0
v src
v main
>webapp
v SQL
>data.sql
>schema.sql
>test
>target
>pom.xml
基本上我不确定我是否已将sql文件放在正确的位置!
我的index.jsp页面
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<%@ page import="java.io.*,java.util.*,java.sql.*"%>
<%@ page import="javax.servlet.http.*,javax.servlet.*" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
<html>
<head>
<title>Election 2016</title>
</head>
<body BGCOLOR=#FFE5B4>
<%
try {
Class.forName("org.h2.Driver");
Connection con = DriverManager.getConnection("jdbc:h2:~/test", "", "");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT DISTINCT CONSTITUENCY FROM candidates ORDER BY CONSTITUENCY");
%>
<h2>Choose constituency</h2>
<form name="constituencyform" action="display.jsp" method="post">
<select name="constituency">
<%
while (rs.next()) {
%><option><%=rs.getString(1)%></option><%
}
rs.close();
stmt.close();
%>
</select>
<input type="submit" value="Next">
</form>
<%
} catch (SQLException ex) {
%><%= ex.getMessage() %><%
}
%>
</body>
</html>
任何帮助将不胜感激!
答案 0 :(得分:0)
Spring boot DataSourceInitializer
需要{strong> src / main / resources 文件夹中的schema.sql
和data.sql
。它是脚本的默认位置。
首先将 SQL 文件夹移动到资源并使用以下属性定义自定义位置
spring.datasource.schema=classpath*:sql/schema.sql
spring.datasource.data=classpath*:sql/data.sql
或者只是将脚本移动到默认位置。