使用H2数据库的Spring MVC应用程序

时间:2016-04-05 19:41:09

标签: java sql-server jsp spring-mvc h2

我很擅长使用嵌入式数据库,也使用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>

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

Spring boot DataSourceInitializer需要{strong> src / main / resources 文件夹中的schema.sqldata.sql。它是脚本的默认位置。

首先将 SQL 文件夹移动到资源并使用以下属性定义自定义位置

spring.datasource.schema=classpath*:sql/schema.sql
spring.datasource.data=classpath*:sql/data.sql

或者只是将脚本移动到默认位置。