qq_45833514 2019-11-25 15:04 采纳率: 0%
浏览 1404

Java web报错,Unknown database 'testdb'

在运行jsp插入数据一直报错Unknown database 'testdb',Mysql是8.0的,试过其他办法都没有用。页面报500错误
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>



添加图书信息

请输入图书信息

${message}<br>
<form action="addBook" method="post">
书号:<input type="text" name="isbn"/><br>
书名:<input type="text" name="title"/><br>
价格:<input type="text" name="price"/><br>
<input type="submit" value="确定"/><input type="reset" value="重置"/>
</form>



package servlet;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.mysql.jdbc.Statement;

@WebServlet("/addBook")
public class BookServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;
    Connection dbconn = null;
    @Override
    public void init() {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            dbconn = DriverManager.getConnection(
                    "jdbc:mysql://127.0.0.1:3306/testDB?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT&allowPublicKeyRetrieval=true",
                    "root", "123456");
        } catch (ClassNotFoundException el) {
            getServletContext().log("驱动程序类找不到");
        } catch (SQLException e2) {
            System.out.println(e2);
        }
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        String isbn = request.getParameter("isbn");
        String title = request.getParameter("title");
        float price = Float.parseFloat(request.getParameter("price"));
        String message = "";
        try {
            String sql = "INSERT INTO books (isbn,title,price) VALUES(?,?,?)";
            PreparedStatement pstmt = dbconn.prepareStatement(sql);
            pstmt.setString(1, isbn);
            pstmt.setString(2, title);
            pstmt.setFloat(3, price);

            int num = pstmt.executeUpdate();
            if (num == 1) {
                message = "插入记录成功";
            } else {
                message = "插入记录失败";
            }
            request.setAttribute("message", message);
            request.getRequestDispatcher("jsp/add-book.jsp").forward(request, response);
        } catch (SQLException e) {
            message = e.getMessage();
            request.setAttribute("message", message);
            request.getRequestDispatcher("jsp/add-book.jsp").forward(request, response);
        }
    }


    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // TODO Auto-generated method stub
        super.doGet(req, resp);
    }

}
<?xml version="1.0" encoding="UTF-8"?>
<Context reloadable = "true">
    <Resource
        name="jdbc/testDB"
        type="javax.sql.DataSource"
        maxActive="4"
        maxIdle="2"
        username="root"
        password="123456"
        maxwait="5000"
        driverClassName="com.mysql.cj.jdbc.Driver"
        url="jdbc:mysql://127.0.0.1:3306/testdb?useSLL=true&amp;useUnicode=true&amp;allowPublicKeyRetrieval=true;characterEncoding=utf-8"
    />

</Context>
``
  • 写回答

3条回答

  • 毕小宝 博客专家认证 2019-11-25 15:08
    关注

    看你配置的数据库名称为 testDB ,MySQL 数据库在 windows 下默认不区分大小写,但是在 Linux 下需要配置忽略大小写的。
    检查你的数据库是否有该 testDB 数据库。

    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?