나는 Id
, Name
, LastName
및 Address
필드 client
라는 새로운 콩을 만들었습니다. 모델과 뷰를 만들었습니다. 내 모델은 모든 클라이언트의 목록을 반환합니다. 그리고 이건 잘 작동하고있어.선택 하나의 기록 (자바 빈즈는,의 setAttribute는 getAttribute를, SQL, 서블릿은)
그러나 Id
으로 필터링 된 하나의 특정 클라이언트 만 선택할 수있는 모델이 필요합니다. 아무도 내가 SQL에서 필터 (ID) 기준에 따라 단 하나의 클라이언트를 얻을 수 있도록이 모델 내부에서 (SQL 문 외에) 변경할 필요가있는 것을 말해 줄 수 있습니까?
{
Connection connection = getDatabaseConnection();
request.setAttribute("clientList", getClientList(connection));
closeDatabaseConnection(connection);
}
private ArrayList<Client> getClientList(Connection con)
{
String sqlstr = "SELECT * FROM Clients";
PreparedStatement stmt = null;
ResultSet rs = null;
ArrayList<Client> clients = new ArrayList<Client>();
try
{
stmt = con.prepareStatement(sqlStr);
rs = stmt.executeQuery();
while (rs.next())
{
Client client = new Client();
client.setId(rs.getInt("Id"));
client.setName(rs.getString("Name"));
client.setLastName(rs.getString("LastName"));
client.setAddress(rs.getString("Address"));
clients.add(client);
}
rs.close();
stmt.close();
}
catch (SQLException sqle)
{
sqle.printStackTrace();
}
finally
{
return clients;
}
}
첫 번째 질문에 대한 대답은 '예'입니다. 두 번째 방법의 아이디어는 실제로 나쁜 옵션이 아닙니다. 나는 당신을 따라하기 시작하고 있다고 생각합니다 :) 기본적으로, 위의 코드에서 ID로 필터링 된 하나의 클라이언트를 얻으려면 어떤 수정을해야 하는지를 기본적으로 말해 줄 수 있습니까? 이 메소드는 데이터베이스의 모든 클라이언트를 설정합니다. 하나의 클라이언트에 대해서만 값을 설정하는 메소드는 무엇일까? – Salzburger
'rs.next()'를'if' 안에 감싸는 것이 좋습니다. 그렇지 않으면 어떤 레코드도 리턴하지 않았을 때 결과 set'get'에 좋은 SQLException을 던질 수 있습니다. DB에 존재). – BalusC
팁 주셔서 감사합니다! – Salzburger