我的“选择”方法的返回类型是否错误?

时间:2018-12-30 14:23:26

标签: java jsp servlets jdbc dao

我正在尝试制作一个简单的网站。 我的目标是使使用SQL插入/选择/更新/删除客户数据成为可能。

虽然我设法使[插入]方法起作用,但我的选择方法根本不起作用。似乎返回类型错误,但我不确定... 我是Java,JSP,SQL和其他所有技术的初学者,所以也许我(再次)混淆了一些基本知识?

任何人都可以检查我的代码吗?

我试图更改返回类型,但是我一直找不到答案。 这是我的代码。

在SQL中,我创建了一个表来保存客户数据。 selectMember方法在java类中 显然,doGet方法位于survlet中。

谢谢!

public MemberVO selectMember(MemberVO member) {
    Connection con = null;
    PreparedStatement pstmt = null;
    ResultSet rs = null;
    try {
        con = getConnection();
        String sql = "select * from Member where userid=?";
        pstmt = con.prepareStatement(sql);
        rs=pstmt.executeQuery();
        if(rs.next()) {
            String userid = rs.getString("userid");
            String password = rs.getString("password");
            String name = rs.getString("name");
            String email = rs.getString("email");
            String address = rs.getString("address");
        }
    }
        catch(Exception e) {
            throw new RuntimeException("MemberDAO.select() : " + e.getMessage());
        }finally {
            closeConnection(con);
        }
    return member;      
    }

 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String action = request.getParameter("action");
    String userid = request.getParameter("userid");
    MemberDAO dao = new MemberDAO();
    MemberVO member = new MemberVO();
    if(action.equals("insert")) {
        request.setAttribute("action",  action);

    }else if(action.equals("update")) {
        try {
            member = dao.selectMember(userid); //here I have the red warning
            request.setAttribute("member", member);
            request.setAttribute("action",  action);
        }catch(RuntimeException e) {
            request.setAttribute("message",  e.getMessage());
        }
    }
    RequestDispatcher disp = request.getRequestDispatcher("/memberform.jsp");
    disp.forward(request, response);
}

2 个答案:

答案 0 :(得分:2)

您忘记设置db.vendors.aggregate([ { $project: { _id: 1, lastEdited: { $add : [new Date('$lastEdited')]}, creationDate: { $add : [new Date('$creationDate')]}, field1: 1, field2: 1, //.. (important to repeat all necessary fields) }, }, { $out: 'vendors', }, ]); 的条件,则需要类似以下内容:

where userid=?

答案 1 :(得分:1)

您绝不会在选择查询中将任何值绑定到占位符。尝试绑定值:

con = getConnection();
String sql = "select * from Member where userid = ?";
pstmt = con.prepareStatement(sql);
pstmt.setInt(1, member.getId());
rs = pstmt.executeQuery();
if (rs.next()) {
    // process single record
}

我假设要绑定的userid值来自MemberVO对象,该对象被传递到selectMember()方法中。我假设存在一种名为getId()的方法。

我还假设userid实际上是整数列,而不是字符串列。如果确实是字符串列,请使用Statement#setString绑定值:

pstmt.setString(1, member.getId());