我正在尝试制作一个简单的网站。 我的目标是使使用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);
}
答案 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());