为什么我的JSP页面上的JDBC(读)查询工作没有成功?

时间:2015-05-07 02:07:17

标签: java mysql jsp maven jdbc

我写了一个.jsp页面作为更大的数据库项目的一部分。目标是使用一系列.jsp页面,使用java和html显示来自mySQL数据库的数据。我遇到了JDBC查询的问题,特别是使用预处理语句从库存表中选择汽车模型。我编写了它,以便id = 3的汽车将返回相应的汽车模型,然后将其打印在屏幕上。运行代码后,屏幕上没有输出,因此问题可能在于我的查询或之前的连接设置,我只是不确定在哪里。

<%-- 
Document   : content
Created on : May 6, 2015, 5:04:20 PM
Author     : Christopher
--%>

<%@page contentType="text/html" pageEncoding="UTF-8" %>
<%@page import = "java.sql.*" %>
<%@page import = "java.util.logging.Level" %>
<%@page import = "java.util.logging.Logger" %>

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>content</title>
    </head>
    <body>
        <h1>Welcome!</h1>
    <%!

public class Template {

public Template(){

    try{

        Class.forName("com.mysql.jdbc.driver");
        Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/itmd4515?zeroDateTimeBehavior=convertToNull"
        ,"itmd4515","itmd4515");
        PreparedStatement ppst = con.prepareStatement("select * from inventory where id = 3");
        ResultSet rs = ppst.executeQuery();
        rs.next();
        String carModel = rs.getString("carModel");
        rs.close();
        con.close();

        System.out.println(carModel);

    }catch(SQLException ex){
        System.err.println(ex.getMessage());
    } catch (ClassNotFoundException ex) {
        Logger.getLogger(Template.class.getName()).log(Level.SEVERE, null, ex);
    }

}

}


    %>
    <br><br>
    <%= new java.util.Date() %>
</body>

inventory 库存表

我确信问题出现在上面的代码中,因为运行代码时没有错误;它根本不显示汽车模型。此外,数据库已正确配置和连接,因此可能也不是问题。

如果问题显而易见,我很抱歉,我仍然在使用JDBC和.jsp。这是一个在Netbeans中完成的maven web应用程序。

logs

最新的系统讯息

修改代码以输出SQLException和ClassNotFoundException,因为我在浏览器中收到以下输出:com.mysql.jdbc.driver

3 个答案:

答案 0 :(得分:1)

您的代码声明此类的Template类和构造函数。如果类甚至没有实例化,为什么会执行它?

除此之外,这是编写JSP页面的一种非常奇怪的方式。你需要阅读一些关于编写简单JSP页面的好书:像“核心Servlets和Javaserver页面:核心技术,第1卷(第2版)”一样 - 这是非常古老但是给初学者提供了线索,在哪里以及如何写简单简单的JSP / Servlets

答案 1 :(得分:1)

将您的System.out.println(carModel)替换为out.println(carModel)

进行测试〜

以下是您的帖子Why do we write out.println() in jsp instead of System.out.println()?

答案 2 :(得分:0)

我从不在jsp中编写类和方法。如果你想测试jdbc子句是否工作,只需编写一个简单的java文件,使用main方法。如下所示

/**
 * Copyright (c) 2014
 * Tanry Electronic Technology Co., Ltd.
 * ChangSha, China
 * 
 * All Rights Reserved.
 * 
 * First created on May 7, 2015 by liyzh
 * Last edited on May 7, 2015 by liyzh
 * 
 * 说明: TODO
 */
package com.tanry.business.module.lc.request;

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

public class Test {
    public static void main(String[] args) {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection con = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/itmd4515?zeroDateTimeBehavior=convertToNull", "itmd4515", "itmd4515");
            PreparedStatement ppst = con.prepareStatement("select * from inventory where id = 3");
            ResultSet rs = ppst.executeQuery();
            while (rs.next()) {
                String carModel = rs.getString("carModel");
                System.out.println(carModel);
            }
            rs.close();
            ppst.close();
            con.close();
        } catch (SQLException ex) {
            System.err.println(ex.getMessage());
        } catch (ClassNotFoundException ex) {
            // Logger.getLogger(Template.class.getName()).log(Level.SEVERE,
            // null, ex);
        }
    }
}

使用像eclipse这样的IDE,您可以非常轻松地调试代码。