Верный ли тип возврата моего метода select? - PullRequest
0 голосов
/ 30 декабря 2018

Я пытаюсь сделать простой сайт.Моя цель - сделать возможным вставку / выбор / обновление / удаление данных о клиентах с использованием SQL.

Хотя мне удалось заставить метод [insert] работать, мой метод select вообще не работает.Кажется, что тип возврата неправильный, но я не уверен ... Я новичок в Java, JSP, SQL и во всем, так что, может быть, я путаю (опять же) некоторые базовые вещи?

Может кто-нибудь проверить мойкод, пожалуйста?

Я пытался изменить тип возврата, но мне так и не удалось найти ответ.Так вот мой код.

В SQL я создал таблицу для сохранения данных клиентов.Метод selectMember находится в классе java, и, очевидно, метод doGet находится в сурплете.

Заранее спасибо!

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 голосов
/ 30 декабря 2018

Вы забыли установить условие для where userid=?, вам нужно что-то вроде:

pstmt = con.prepareStatement(sql);
pstmt .setString(1, "yourUserId");
0 голосов
/ 30 декабря 2018

Вы никогда не привязываете какое-либо значение к заполнителю в вашем запросе выбора.Попробуйте связать значение:

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());
...