Java 为什么即使表在项目中成功连接,我也会得到org.springframework.jdbc.uncategorizedsqlsexception?

Java 为什么即使表在项目中成功连接,我也会得到org.springframework.jdbc.uncategorizedsqlsexception?,java,spring-boot,spring-mvc,spring-jdbc,jdbctemplate,Java,Spring Boot,Spring Mvc,Spring Jdbc,Jdbctemplate,我已经对所有sql语句进行了JUnit测试,它工作正常,但现在我试图在html表中列出表中的数据,我得到一个HTTP状态500–内部服务器错误。另外,当我在MainController.java文件中执行main方法时,我可以打印出数据列表 MainController.java import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframe

我已经对所有sql语句进行了JUnit测试,它工作正常,但现在我试图在html表中列出表中的数据,我得到一个HTTP状态500–内部服务器错误。另外,当我在MainController.java文件中执行main方法时,我可以打印出数据列表

MainController.java

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import com.student.bean.Student;
import com.student.dao.StudentDAO;

@Controller
public class MainController {

    
    @Autowired
    private  StudentDAO studentDAO;
    
    @RequestMapping(value="/")
    
    public ModelAndView listStudent(ModelAndView model){
        
        List<Student> listStudent = studentDAO.list();// line 24
        
        model.addObject("listStudent", listStudent);
        model.setViewName("index");
        
        
        return model;
    }

}


package com.student.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

import javax.sql.DataSource;

import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.ResultSetExtractor;
import org.springframework.jdbc.core.RowMapper;

import com.student.bean.Student;

public class StudentDAOImpl implements StudentDAO {
    private JdbcTemplate jdbcTemplate;

    public StudentDAOImpl(DataSource dataSource) {
        this.jdbcTemplate = new JdbcTemplate(dataSource);
    }

    public static final String TABLE = "students";

    @Override
    public int save(Student obj) {

        String qry = "insert into " + TABLE + "(id, first_name, last_name, gpa, major) values (?, ?, ?, ?,?)";
        return jdbcTemplate.update(qry, obj.getId(), obj.getFirstName(), obj.getLastName(), obj.getGpa(),
                obj.getMajor());

    }

    @Override
    public int update(Student obj) {
        String qry = "update " + TABLE + " set  first_name = ?, last_name = ?, gpa = ?, major = ? where id = ?";
        return jdbcTemplate.update(qry, obj.getFirstName(), obj.getLastName(), obj.getGpa(), obj.getMajor(),
                obj.getId());

    }

    @Override
    public Student get(Integer id) {
        String qry = "select * from " + TABLE + " where id =" + id;
        ResultSetExtractor<Student> extractor = new ResultSetExtractor<Student>() {

            public Student extractData(ResultSet rs) throws SQLException, DataAccessException {
                if (rs.next()) {
                    int studentId = rs.getInt("id");
                    String firstName = rs.getString("first_name");
                    String lastName = rs.getString("last_name");
                    double gpa = rs.getDouble("gpa");
                    String major = rs.getString("major");
                    return new Student(studentId, firstName, lastName, gpa, major);
                }
                return null;

            }
        };
        return jdbcTemplate.query(qry, extractor);
    }

    @Override
    public int delete(Integer id) {
        String qry = "delete from " + TABLE + " where id =" + id;
        return jdbcTemplate.update(qry);
    }

    @Override
    public List<Student> list() {
        String qry = "select * from " + TABLE;

        RowMapper<Student> rowMapper = new RowMapper<Student>() {
            public Student mapRow(ResultSet rs, int rowNum) throws SQLException {
                int studentId = rs.getInt("id");
                String firstName = rs.getString("first_name");
                String lastName = rs.getString("last_name");
                double gpa = rs.getDouble("gpa");
                String major = rs.getString("major");
                return new Student(studentId, firstName, lastName, gpa, major);
            }
        };

        return jdbcTemplate.query(qry, rowMapper);//line 84
    }

}


这听起来可能是一个愚蠢的问题,但您的数据库中是否有一个名为
students
的表?是的,我有,而且我有一个可以插入、选择和删除数据的dao。但是当我想列出数据时,我得到了这个错误。
org.sqlite.SQLiteException: [SQLITE_ERROR] SQL error or missing database (no such table: students)
    at org.sqlite.core.DB.newSQLException(DB.java:1010)
    at org.sqlite.core.DB.newSQLException(DB.java:1022)
    at org.sqlite.core.DB.throwex(DB.java:987)
    at org.sqlite.core.NativeDB.prepare_utf8(Native Method)
    at org.sqlite.core.NativeDB.prepare(NativeDB.java:134)
    at org.sqlite.core.DB.prepare(DB.java:264)
    at org.sqlite.jdbc3.JDBC3Statement.executeQuery(JDBC3Statement.java:73)
    at org.springframework.jdbc.core.JdbcTemplate$1QueryStatementCallback.doInStatement(JdbcTemplate.java:438)
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:375)
    at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:451)
    at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:461)
    at com.student.dao.StudentDAOImpl.list(StudentDAOImpl.java:84)
    at com.student.controller.MainController.listStudent(MainController.java:24)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:892)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1039)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:897)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:626)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:748)```